Tag: reflection

如何使用javareflection在类中定义所有导入?

嗨,我是javareflection域的新手。所以任何人都可以在这个问题场景中指导我。 我有一个名为“SomClass.java”的类 ,它导入一个名为“SomPackage.RefClass” 的包和一些其他java库,如java.lang ..等。 现在我希望通过reflection了解一个类中定义的所有导入。 import SomPackage.RefClass; import java.lang.reflect.Field; import java.io.IOException; public class SomeClass{ RefClass refClass_Obj; String nationality; ///some other members } 我只想知道使用reflection在类中定义的所有导入的列表。 我看到一个问题听到的类似于我的问题,但是没有详细阐述,所以需要一些良好的帮助方向。 提前致谢。

使用ClassLoader和Class.forName加载类之间的区别

以下是2个代码段 第一个使用ClassLoader类来加载指定的类 ClassLoader cls = ClassLoader.getSystemClassLoader(); Class someClass = cls.loadClass(“TargetClass”); 第二个使用Class.forName()来加载指定的类 Class cls = Class.forName(“TargetClass”); 上述方法之间有什么区别。 哪一个用于哪个目的?

运行时的局部变量的通用类型

Java中是否有一种方法可以反映generics类型的局部变量? 我知道你应该用一个字段 – 获取generics类型的java.util.List 。 知道如何解决,例如: public void foo(List s){ //reflect s somehow to get String } 或者甚至更一般: public void foo(List s){ //reflect s somehow to get T }

Javareflection:如何检索匿名内部类?

我在另一个类( SomeClass )中有一个匿名内部类。 SomeClass.class.getClasses()和SomeClass.class.getDeclaredClasses()返回空数组。 我在Class’Javadocs中找不到一些关于此的提示。 可以通过某种方式使用reflection检索匿名内部类吗? 匿名内部类和普通内部类之间还有什么显着差异?

如何限制开发人员使用reflection来访问Java中的私有方法和构造函数?

如何限制开发人员使用reflection来访问Java中的私有方法和构造函数? 使用普通的Java代码,我们无法访问类外的私有构造函数或私有方法。 但是通过使用reflection,我们可以访问Java类中的任何私有方法和构造函数。 那么我们如何为Java代码提供安全保障呢?

我可以reflection性地在java中实例化generics类型吗?

是否有可能在Java中reflection性地实例化generics类型? 使用这里描述的技术我得到一个错误,因为类标记不能是通用的。 以下面的例子为例。 我想实例化一些实现Creator的Creator子类。 实际的类名称作为命令行参数传入。 我们的想法是能够在运行时指定Creator的实现。 还有另一种方法来完成我在这里要做的事情吗? public interface Creator { T create(); } public class StringCreator implements Creator { public String create() { return new String(); } } public class FancyStringCreator implements Creator { public String create() { return new StringBuffer().toString(); } } public static void main(String[] args) throws Exception { Class someClass = […]

如何在java中获取方法的字符串名称?

如何通过reflection找出方法的字符串名称? 例如给出: class Car{ public void getFoo(){ } } 我想得到字符串“getFoo”,如下所示: Car.getFoo.toString() == “getFoo” // TRUE

使用javareflection实例化私有内部类

是否可以使用Javareflection从另一个类实例化私有内部类。 例如,如果我使用此代码 public class Main { public static void main(String[] args) {} } class OtherClass { private class Test {} } 是否可以从类main中的main方法实例化并获得对Test的访问权限。

Javareflection:如何从对象获取字段值,而不知道它的类

说,我有一个返回带有一些对象的自定义List的方法。 它们作为Object返回给我。 我需要从这些对象中获取某个字段的值,但我不知道对象的类。 有没有办法通过Reflecion或其他方式做到这一点?

带有子类参数的Java getMethod

我正在编写一个使用reflection来动态查找和调用方法的库。 只给出一个对象,一个方法名和一个参数列表,我需要调用给定的方法,就好像方法调用是在代码中显式编写的一样。 我一直在使用以下方法,在大多数情况下都可以使用: static void callMethod(Object receiver, String methodName, Object[] params) { Class[] paramTypes = new Class[params.length]; for (int i = 0; i < param.length; i++) { paramTypes[i] = params[i].getClass(); } receiver.getClass().getMethod(methodName, paramTypes).invoke(receiver, params); } 但是,当其中一个参数是方法支持的类型之一的子类时,reflectionAPI会NoSuchMethodException 。 例如,如果接收者的类定义了testMethod(Foo) ,则以下操作失败: receiver.getClass().getMethod(“testMethod”, FooSubclass.class).invoke(receiver, new FooSubclass()); 即使这有效: receiver.testMethod(new FooSubclass()); 我该如何解决这个问题? 如果方法调用是硬编码的,则没有问题 – 编译器只使用重载算法来选择最适用的方法。 但它不适用于reflection,这是我需要的。 提前致谢!