diff --git a/package.php.yml b/package.php.yml index 721b0b9..e2ead48 100644 --- a/package.php.yml +++ b/package.php.yml @@ -1,5 +1,5 @@ name: java-reflection-ext -version: 1.1.1 +version: 1.2.0 description: Java Reflection API plugins: diff --git a/sdk/java/reflection/JarClassLoader.php b/sdk/java/reflection/JarClassLoader.php new file mode 100644 index 0000000..483e731 --- /dev/null +++ b/sdk/java/reflection/JarClassLoader.php @@ -0,0 +1,15 @@ + { + public ReflectionArray(Environment env, Array wrappedObject) { + super(env, wrappedObject); + } + + public ReflectionArray(Environment env, ClassEntity clazz) { + super(env, clazz); + } + + @Reflection.Signature + public static ReflectionObject newInstance(Environment environment, Class componentType, int length) { + return new ReflectionObject(environment, Array.newInstance(componentType, length)); + } + + @Reflection.Signature + public static int getLength(ReflectionObject object) { + return Array.getLength(object.getWrappedObject()); + } + + @Reflection.Signature + public static ReflectionObject get(Environment environment, ReflectionObject object, int id) { + return new ReflectionObject(environment, Array.get(object.getWrappedObject(), id)); + } + + @Reflection.Signature + public static void set(Environment environment, ReflectionObject object, int id, ReflectionObject reflectionObject) { + Array.set(object.getWrappedObject(), id, reflectionObject.getWrappedObject()); + } +} diff --git a/src-jvm/main/java/org/venity/javareflection/classes/ReflectionClass.java b/src-jvm/main/java/org/venity/javareflection/classes/ReflectionClass.java index 262d4fd..bb7f061 100644 --- a/src-jvm/main/java/org/venity/javareflection/classes/ReflectionClass.java +++ b/src-jvm/main/java/org/venity/javareflection/classes/ReflectionClass.java @@ -32,6 +32,11 @@ public static ReflectionClass forName(Environment env, String className) throws return new ReflectionClass(env, Class.forName(className)); } + @Reflection.Signature + public static ReflectionClass forName(Environment env, String className, JarClassLoader classLoader) throws ClassNotFoundException { + return new ReflectionClass(env, Class.forName(className, false, classLoader.getClassLoader())); + } + @Reflection.Signature public ReflectionObject newInstance() throws IllegalAccessException, InstantiationException { return new ReflectionObject(__env__, __wrappedObject.newInstance());