
在Java反射
如何获得注释值,我有类人:在Java反射@Retention(RetentionPolicy.RUNTIME) @interface MaxLength { int length(); } @Retention(RetentionPolicy.RUNTIME) @interface NotNull { } public class Person { private int age; private String name; public Person(int age, String name) { ...
2024-01-10
Java反射性能
使用反射而不是调用类构造函数来创建对象是否会导致任何显着的性能差异?回答:由于反射涉及动态解析的类型,因此无法执行某些Java虚拟机优化。因此,反射操作的性能要比非反射操作慢,因此应避免在对性能敏感的应用程序中经常调用的代码段中。这是一个简单的测试,我在运行Sun JRE 6u10的计...
2024-01-10
java反射, 不看你可别后悔
开发中, 难免遇到些私有的属性和方法, 就好比下面的实体一样, 我们该怎么获得她, 并玩弄于手掌呢? 我们先来个实体瞧瞧, 给你个对象你也new不了, hahaha… 单身wangpublic class Student { private String name; private int age; private Student(String name, int age) { this.name = name; this.age = age; } ...
2024-01-10
什么是java反射,为什么有用?
什么是java反射,为什么有用?回答:名称反射用于描述能够检查同一系统(或本身)中其他代码的代码。例如,假设你在Java中有一个未知类型的对象,并且你想在该对象上调用“ doSomething”方法(如果存在)。除非对象符合已知的接口,否则Java的静态类型化系统并不是真正为支持该类型而设计的,...
2024-01-10
Java使用反射调用静态方法
我想调用main静态的方法。我得到了类型的对象Class,但是我无法创建该类的实例,也无法调用该static方法main。回答:// String.class here is the parameter type, that might not be the case with youMethod method = clazz.getMethod("methodName", String.class);Object o = method.invoke(null, "whatever");如果方法是私有使用g...
2024-01-10
Java 反射通用获取字段值
我试图通过反射接收字段值。问题是我不知道字段类型,必须在获取值时确定它。这段代码会导致以下异常:无法将java.lang.String字段com .... fieldName设置为java.lang.StringField field = object.getClass().getDeclaredField(fieldName);field.setAccessible(true);Class<?> targetType = field.getType();Object objectValue = targe...
2024-01-10
Java:使用反射实例化枚举
假设您有一个文本文件,例如:my_setting = ONsome_method = METHOD_Averbosity = DEBUG...您希望相应地更新相应的对象:Setting my_setting = ON;Method some_method = METHOD_A;Verbosity verbosity = DEBUG;...凡是不同种类的枚举。我想有一个通用的方法来实例化枚举值。也就是说,在运行时使用反射,而无需事先知道对象的枚...
2024-01-10
用Java反射实例化私有内部类
是否可以使用Java反射从另一个类实例化私有内部类。例如,如果我采用了这段代码public class Main { public static void main(String[] args) {}}class OtherClass { private class Test {}}是否可以实例化并从main类中的main方法获得对Test的访问。回答:使用反射时,您会发现该内部类的构造函数将外部类的实例作为附...
2024-01-10
Java:什么情况需要使用反射?
因此,通过阅读一些文章,我得到的信息是能够实时修改字段并为类设置值,而无需重新编译。所以有可能对没有源代码的第三方Java库创建的类执行此操作/是否可以在运行时使用反射来修改类实例?在其他哪些情况下,通常还会使用反射?我试图了解反射如何适用。回答:任何时候您在运行时处理...
2024-01-10
如何使用Java反射调用超类方法
我有两节课:public class A { public Object method() {...}}public class B extends A { @Override public Object method() {...}}我有一个实例B。如何调用A.method()从b?基本上,效果与super.method()从调用相同B。B b = new B();Class<?> superclass = b.getClass().getSuperclass();Method meth...
2024-01-10
你可以使用java反射找到包中的所有类吗?
你可以使用java反射找到包中的所有类吗?回答:由于类装载机的动态特性,这是不可能的。类加载器不需要告诉VM它可以提供哪些类,而是它们只是对类的处理请求,而必须返回一个类或引发异常。但是,如果你编写自己的类加载器,或检查类路径及其jar,则可以找到此信息。但这将通过文件系统操...
2024-01-10
如何通过反射确定Java类是否抽象
我正在遍历Jar文件中的类,希望找到那些不是抽象的类。我可以通过实例化类并捕获InstantiationException来解决此问题,但是由于某些类的启动工作量很大,因此性能会受到影响。我在Class.java文档中找不到明显类似于isAbstract()的东西。回答:当您在类对象上调用getModifiers()时,它将抽象作为其修改...
2024-01-10
使用Java反射更改私有静态最终字段
我有一堂课private static final,但不幸的是,我需要在运行时更改它。使用反射我得到这个错误: java.lang.IllegalAccessException: Can not set static final boolean field有什么办法可以改变价值?Field hack = WarpTransform2D.class.getDeclaredField("USE_HACK");hack.setAccessible(true);hack.set(null, true);回答:假设没...
2024-01-10
Java中是否可以通过反射访问私有字段
Java中是否可以通过反射访问私有字段str?例如获取该字段的值。class Test{ private String str; public void setStr(String value) { str = value; }}回答:是。 Field f = Test.class.getDeclaredField("str"); f.setAccessible(true);//Very important, this allows the setting to work. ...
2024-01-10
如何在Java中使用反射创建枚举实例?
当我阅读 Effective Java时,作者告诉我,单元素enum类型是实现单例的最佳方法,因为我们不必考虑复杂的序列化或反射攻击。这意味着我们无法创建enum使用反射的实例,对吗?我已经做了一些测试,并在enum这里上课:public enum Weekday {}然后我尝试创建一个实例Weekday:Class<Weekday> weekdayClass = Weekday.class;...
2024-01-10
Java-你能用反射找到包中的所有类吗?
是否可以在给定的包中找到所有类或接口?(快速查看例如Package,似乎没有。)回答:由于类装载机的动态特性,这是不可能的。类加载器不需要告诉VM它可以提供哪些类,而是它们只是对类的处理请求,而必须返回一个类或引发异常。但是,如果你编写自己的类加载器,或检查类路径及其jar,则可...
2024-01-10
我可以使用Java反射获取方法参数名称吗?
如果我有这样的课程:public class Whatever{ public void aMethod(int aParam);}有没有办法知道aMethod使用名为aParam类型的参数int?回答:总结一下:如果编译期间包含调试信息,则可以获取参数名称。查看此答案以获取更多详细信息否则得到的参数名称是不是有可能使用可以获取参数类型 method.getParameterType...
2024-01-10
如何使用反射(Java)调用私有静态方法?
我想调用一个私有静态方法。我有名字 我听说可以使用Java反射机制来完成。我该怎么做? 我在尝试调用该方法时遇到的一个问题是如何指定其参数的类型。我的方法收到一个参数,其类型为Map。因此,我不能这样做Map<User,String>.TYPE(在运行时,由于Java Type擦除,没有Map这样的东西)。是否有另一种...
2024-01-10
如何使用Java反射获取类中定义的所有导入?
嗨,我是java反射域的新手,所以任何人都可以在这种问题情况下指导我。我有一个名为 ,它 名为 的包以及一些其他的Java库,例如java.lang ..等。 *import SomPackage.RefClass;import java.lang.reflect.Field;import java.io.IOException; public class SomeClass{ RefClass refClass_Obj; String nationality;///some other mem...
2024-01-10
Java反射:如何从对象获取字段值,而不知道其类
说,我有一个方法返回List带有一些对象的自定义。他们归还Object了我。我需要从这些对象中获取某个字段的值,但是我不知道这些对象的类。有没有办法通过Reflecion或其他方式做到这一点?回答:假设一个简单的情况,您的字段是public:List list; // from your methodfor(Object x : list) { Class<?> clazz = x.getCla...
2024-01-10
我可以使用Java反射获取有关局部变量的信息吗?
我需要知道局部变量的类型。我正在使用Java反射,但无法使用它。您能否让我知道如何知道局部变量的类型/名称。我可以使用Java反射获取有关局部变量的信息吗?回答:假设你在谈论方法或构造函数的局部变量,则无法使用反射来了解它们。你要么使用字节码库,例如BCEL或ASM,或使用远程调试器...
2024-01-10
结合反射与 XML 实现 Java 编程的动态性
反射是 Java 语言被视为动态或准动态语言的一个关键性质,结合反射和 XML会帮助我们更快、更方便地实现一些动态代码,从而解决编程中可能遇到的不确定问题。本文将结合反射与 XML 对 Java编程的动态性进行深入浅出的讨论。在理解本文的思想之后,您可以将其应用到程序中以创建灵活的代码。引言...
2024-01-10
如何在Java中通过反射访问父类的父类的私有字段?
在一个API中,我使用的是一个具有 私有字段 ( )。 类 在API中 扩展了A类 。我需要用我的 实现来扩展类B,但是我需要类A的privateField。我应该使用反射:如何访问超超类的私有字段? __ *Class A - privateFieldClass B extends AClass C extends B + method use A.privateField回答:您需要执行此操作的事实表明...
2024-01-10
Java反射获取子类变量值/从成员字段获取对象实例
说我有一个具有一些成员变量的类,一个或多个是具有成员变量的另一个类。如何获得两个类中每个变量的值?我可以通过以下方式获取变量:通过调用getDeclaredFields();Foo对象的值,field.get(obj)然后再次对其进行迭代以获取子类变量。但是,如何在没有该类实例的情况下获取每个子类成员变量的值?我...
2024-01-10
Java如何通过以原始类型作为参数的反射来调用方法
我在类中有以下两种方法:public void Test(int i){ System.out.println("1");}public void Test(Integer i){ System.out.println("2");}下面的代码行this.getClass().getMethod("Test",Integer.class).invoke(this, 10);印刷品2,如何使其印刷1?回答:要使用反射调用以原始类型作为参数的方法:你可以用 int.classthis.getClass...
2024-01-10
