草庐IT

Reflection

全部标签

Java:使用反射实例化枚举

假设你有一个像这样的文本文件:my_setting=ONsome_method=METHOD_Averbosity=DEBUG...您希望相应地更新相应的对象:Settingmy_setting=ON;Methodsome_method=METHOD_A;Verbosityverbosity=DEBUG;...所有这些都是不同类型的枚举。我想要一种通用的方法来实例化枚举值。也就是说,在运行时使用反射,并且事先不知道对象的枚举类型。我会想到这样的事情:for(ConfigLineline:lines){String[]tokens=line.string.split("=",2);Str

java - 使用反射访问不可见的类

我正在尝试使用反射获取一个不可见类的实例,即AKA包私有(private)类。我想知道是否有一种方法可以切换修饰符以使其公开,然后使用Class.forName访问它。当我现在尝试这样做时,它会阻止我说我做不到。不幸的是,Class类没有setAccesible方法。 最佳答案 嵌套类-在其他类中定义的类(包括静态和非静态类)内部类-非静态嵌套类(内部类的实例需要外部类的实例存在)非嵌套(顶级)类根据您的问题,我们知道您要访问的构造函数不是公开的。所以你的类可能看起来像这样(A类在某些包中,与我们的不同)packagepackage

java - 使用反射访问不可见的类

我正在尝试使用反射获取一个不可见类的实例,即AKA包私有(private)类。我想知道是否有一种方法可以切换修饰符以使其公开,然后使用Class.forName访问它。当我现在尝试这样做时,它会阻止我说我做不到。不幸的是,Class类没有setAccesible方法。 最佳答案 嵌套类-在其他类中定义的类(包括静态和非静态类)内部类-非静态嵌套类(内部类的实例需要外部类的实例存在)非嵌套(顶级)类根据您的问题,我们知道您要访问的构造函数不是公开的。所以你的类可能看起来像这样(A类在某些包中,与我们的不同)packagepackage

Java 反射 : Is the order of class fields and methods standardized?

在Java类上使用反射来访问所有字段、方法等:这些元素是否有标准化顺序(在某些标准中指定)?当然,我可以凭经验检查它,但我需要知道它是否总是一样的。编辑:我在等待这个问题:我需要什么订单;)长话短说:我有JAXB注释的类,不想要直观地表示这些类。而XML属性的顺序与XML都不相关标准,也不是JAXB,我希望XML属性有一定的顺序视觉表现。例如:开始在结束之后。这会伤害一个人的直觉。 最佳答案 根据thedocumentation:getFields()ReturnsanarraycontainingFieldobjectsrefle

Java 反射 : Is the order of class fields and methods standardized?

在Java类上使用反射来访问所有字段、方法等:这些元素是否有标准化顺序(在某些标准中指定)?当然,我可以凭经验检查它,但我需要知道它是否总是一样的。编辑:我在等待这个问题:我需要什么订单;)长话短说:我有JAXB注释的类,不想要直观地表示这些类。而XML属性的顺序与XML都不相关标准,也不是JAXB,我希望XML属性有一定的顺序视觉表现。例如:开始在结束之后。这会伤害一个人的直觉。 最佳答案 根据thedocumentation:getFields()ReturnsanarraycontainingFieldobjectsrefle

Java 反射 : Why is it so slow?

基于Java反射慢的名声,我一直避免使用它。我在当前项目的设计中达到了一个点,能够使用它会使我的代码更具可读性和优雅,所以我决定试一试。我只是对差异感到惊讶,我注意到有时运行时间几乎长了100倍。即使在这个只实例化一个空类的简单示例中,也令人难以置信。classB{}publicclassTest{publicstaticlongtimeDiff(longold){returnSystem.currentTimeMillis()-old;}publicstaticvoidmain(Stringargs[])throwsException{longnumTrials=(long)Math

Java 反射 : Why is it so slow?

基于Java反射慢的名声,我一直避免使用它。我在当前项目的设计中达到了一个点,能够使用它会使我的代码更具可读性和优雅,所以我决定试一试。我只是对差异感到惊讶,我注意到有时运行时间几乎长了100倍。即使在这个只实例化一个空类的简单示例中,也令人难以置信。classB{}publicclassTest{publicstaticlongtimeDiff(longold){returnSystem.currentTimeMillis()-old;}publicstaticvoidmain(Stringargs[])throwsException{longnumTrials=(long)Math

java - 动态查找表示原始 Java 类型的类

我需要在Java中进行一些反射方法调用。这些调用将包括具有原始类型(int、double等)参数的方法。反射性查找方法时指定此类类型的方式有int.class、double.class等。挑战在于我正在接受来自外部源的输入,该源将动态指定类型。因此,我还需要动态地提出这些类引用。想象一个带有参数类型列表的方法名称列表的分隔文件:doSomethingintdoubledoSomethingElsejava.lang.Stringboolean如果输入类似于java.lang.String,我知道我可以对那个Class实例使用Class.forName("java.lang.String

java - 动态查找表示原始 Java 类型的类

我需要在Java中进行一些反射方法调用。这些调用将包括具有原始类型(int、double等)参数的方法。反射性查找方法时指定此类类型的方式有int.class、double.class等。挑战在于我正在接受来自外部源的输入,该源将动态指定类型。因此,我还需要动态地提出这些类引用。想象一个带有参数类型列表的方法名称列表的分隔文件:doSomethingintdoubledoSomethingElsejava.lang.Stringboolean如果输入类似于java.lang.String,我知道我可以对那个Class实例使用Class.forName("java.lang.String

java - 通过使用反射获取带有注释的字段列表

我创建我的注释public@interfaceMyAnnotation{}我把它放在我的测试对象的字段上publicclassTestObject{@MyAnnotationfinalprivateOutlookoutlook;@MyAnnotationfinalprivateTemperaturetemperature;...}现在我想用MyAnnotation获取所有字段的列表。for(Fieldfield:TestObject.class.getDeclaredFields()){if(field.isAnnotationPresent(MyAnnotation.class)){