草庐IT

Reflection

全部标签

java - 是否可以在 java 中使用反射创建没有无参数构造函数的类的 'blank' 实例?

我有一个没有默认构造函数的类。我需要一种方法来获取此类的“空白”实例。“空白”表示实例化后所有类字段都应具有默认值比如null、0等。我问是因为我需要能够序列化/反序列化大树对象。而且我无法访问这些对象类的来源,并且类既没有默认构造函数也没有实现可序列化。尝试序列化这种结构可能不是一个好主意,但另一种方法是将其转换为更容易序列化的东西。 最佳答案 使用标准反射,没有,但是有一个库可以为您做到这一点:objenesis.它专门设计用于实例化没有默认构造函数的类,它被其他序列化库使用,如xstream.注意:在这些情况下可能不会调用构造

Java 反射 - 对象不是声明类的实例

Google上到处都在问这个问题,但我仍然遇到问题。这就是我想要做的。因此,就像我的标题所述,我收到“对象不是声明类的实例”错误。有任何想法吗?谢谢!Main.javaClassbase=Class.forName("server.functions.TestFunction");MethodserverMethod=base.getMethod("execute",HashMap.class);serverMethod.invoke(base,newHashMap());TestFunction.javapackageserver.functions;importjava.util.

Java 反射 - 对象不是声明类的实例

Google上到处都在问这个问题,但我仍然遇到问题。这就是我想要做的。因此,就像我的标题所述,我收到“对象不是声明类的实例”错误。有任何想法吗?谢谢!Main.javaClassbase=Class.forName("server.functions.TestFunction");MethodserverMethod=base.getMethod("execute",HashMap.class);serverMethod.invoke(base,newHashMap());TestFunction.javapackageserver.functions;importjava.util.

java - 获取枚举类型变量的注释

我有一些Enum的非null变量(例如en1)类型。问题是:如何获取en1变量引用的枚举常量相关的注解? 最佳答案 试试这个(java反射):Stringfield=En.AAA.name();En.class.getField(field).getAnnotations();它应该为您提供来自AAA的注释。编辑:正如作者所说:en1.getClass().getField(((Enum)en1).name()).getAnnotations();为他工作:) 关于java-获取枚举类型

java - 获取枚举类型变量的注释

我有一些Enum的非null变量(例如en1)类型。问题是:如何获取en1变量引用的枚举常量相关的注解? 最佳答案 试试这个(java反射):Stringfield=En.AAA.name();En.class.getField(field).getAnnotations();它应该为您提供来自AAA的注释。编辑:正如作者所说:en1.getClass().getField(((Enum)en1).name()).getAnnotations();为他工作:) 关于java-获取枚举类型

java - 如何确定 Java 中泛型字段的类型?

我一直在尝试确定类中字段的类型。我已经看过所有的内省(introspection)方法,但还没有完全弄清楚如何去做。这将用于从java类生成xml/json。我在这里查看了一些问题,但没有找到我真正需要的。例子:classPerson{publicfinalStringname;publicfinalListchildren;}当我编码这个对象时,我需要知道chidren字段是Person类型的对象列表,这样我才能正确编码它。我试过了for(Fieldfield:Person.class.getDeclaredFields()){System.out.format("Type:%s%n

java - 如何确定 Java 中泛型字段的类型?

我一直在尝试确定类中字段的类型。我已经看过所有的内省(introspection)方法,但还没有完全弄清楚如何去做。这将用于从java类生成xml/json。我在这里查看了一些问题,但没有找到我真正需要的。例子:classPerson{publicfinalStringname;publicfinalListchildren;}当我编码这个对象时,我需要知道chidren字段是Person类型的对象列表,这样我才能正确编码它。我试过了for(Fieldfield:Person.class.getDeclaredFields()){System.out.format("Type:%s%n

Java:当方法明显存在时出现 NoSuchMethodException

在我当前的项目中,我觉得有必要使用反射在Java中创建一种模拟回调系统。但是,我在让我的反射(reflection)真正发挥作用时遇到了问题。错误代码如下:publicCallback(ObjectparentObj,StringmethodName,Class...parameters){if(parentObj==null)thrownewIllegalArgumentException("parentObjcannotbenull",newNullPointerException());Classclazz=parentObj.getClass();//Tracedebuggin

Java:当方法明显存在时出现 NoSuchMethodException

在我当前的项目中,我觉得有必要使用反射在Java中创建一种模拟回调系统。但是,我在让我的反射(reflection)真正发挥作用时遇到了问题。错误代码如下:publicCallback(ObjectparentObj,StringmethodName,Class...parameters){if(parentObj==null)thrownewIllegalArgumentException("parentObjcannotbenull",newNullPointerException());Classclazz=parentObj.getClass();//Tracedebuggin

java - 如何在java中获取类注释?

我已经创建了自己的注释类型,如下所示:public@interfaceNewAnnotationType{}并将其附加到一个类:@NewAnnotationTypepublicclassNewClass{publicvoidDoSomething(){}}我试图通过这样的反射获得类注释:ClassnewClass=NewClass.class;for(Annotationannotation:newClass.getDeclaredAnnotations()){System.out.println(annotation.toString());}但它没有打印任何东西。我做错了什么?