From: Thomas Walker Lynch Date: Sat, 14 Dec 2024 16:51:01 +0000 (+0000) Subject: constructor accepts a class name string instead of a class metadata object X-Git-Url: https://git.reasoningtechnology.com/style/rt_dark_doc.css?a=commitdiff_plain;h=f07c3295b1a1b681d450cb089014395ffae5d249;p=Mosaic constructor accepts a class name string instead of a class metadata object --- 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