From f07c3295b1a1b681d450cb089014395ffae5d249 Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Sat, 14 Dec 2024 16:51:01 +0000 Subject: [PATCH] constructor accepts a class name string instead of a class metadata object --- .../Mosaic_AllMethodsPublicProxy.java" | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git "a/developer/javac\360\237\226\211/Mosaic_AllMethodsPublicProxy.java" "b/developer/javac\360\237\226\211/Mosaic_AllMethodsPublicProxy.java" index 4f38092..cdcd82f 100644 --- "a/developer/javac\360\237\226\211/Mosaic_AllMethodsPublicProxy.java" +++ "b/developer/javac\360\237\226\211/Mosaic_AllMethodsPublicProxy.java" @@ -187,6 +187,26 @@ public class Mosaic_AllMethodsPublicProxy { this.map = new FunctionSignature_To_Handle_Map(target_type); } + // Constructor accepting a fully qualified class name + public Mosaic_AllMethodsPublicProxy(String fully_qualified_class_name) throws ClassNotFoundException { + try { + Class clazz = Class.forName(fully_qualified_class_name); + + // Use MethodHandles to ensure access to private classes + MethodHandles.Lookup lookup = MethodHandles.lookup(); + MethodHandles.Lookup private_lookup = MethodHandles.privateLookupIn(clazz, lookup); + + this.target_type = clazz; + this.map = new FunctionSignature_To_Handle_Map(clazz); + + } catch (ClassNotFoundException e) { + throw new ClassNotFoundException("Class not found: " + fully_qualified_class_name, e); + } catch (IllegalAccessException e) { + throw new RuntimeException("Failed to access private class: " + fully_qualified_class_name, e); + } + } + + public Object construct(String constructor_name, Object... arg_list) { try { // Resolve the constructor signature -- 2.20.1