草庐IT

Reflection

全部标签

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

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

java - 通过反射更改私有(private)最终字段

classWithPrivateFinalField{privatefinalStrings="I’mtotallysafe";publicStringtoString(){return"s="+s;}}WithPrivateFinalFieldpf=newWithPrivateFinalField();System.out.println(pf);Fieldf=pf.getClass().getDeclaredField("s");f.setAccessible(true);System.out.println("f.get(pf):"+f.get(pf));f.set(pf,"No

java - 通过反射更改私有(private)最终字段

classWithPrivateFinalField{privatefinalStrings="I’mtotallysafe";publicStringtoString(){return"s="+s;}}WithPrivateFinalFieldpf=newWithPrivateFinalField();System.out.println(pf);Fieldf=pf.getClass().getDeclaredField("s");f.setAccessible(true);System.out.println("f.get(pf):"+f.get(pf));f.set(pf,"No

java - Java 反射的更快替代方案

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion众所周知,反射是一种灵活但缓慢的方法,用于在运行时维护和修改代码的行为。但是如果我们必须使用这样的功能,Java中是否有比反射API更快的编程技术来进行动态修改?这些替代反射的优缺点是什么? 最佳答案 Reflection的一种替代方法是动态生成类文件。这个生成的类应该执行所需的操作,例如调用在运行时发

java - Java 反射的更快替代方案

已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion众所周知,反射是一种灵活但缓慢的方法,用于在运行时维护和修改代码的行为。但是如果我们必须使用这样的功能,Java中是否有比反射API更快的编程技术来进行动态修改?这些替代反射的优缺点是什么? 最佳答案 Reflection的一种替代方法是动态生成类文件。这个生成的类应该执行所需的操作,例如调用在运行时发

java - Java 类可以在运行时向自身添加方法吗?

一个类可以在运行时给自己添加一个方法吗(比如从一个staticblock中),这样如果有人在这个类上执行反射,他们会看到新方法,即使它不是在编译时定义的?背景:按照惯例,我正在使用的框架需要定义具有doAction(...)方法的Action类。框架在运行时检查这些类以查看它们的doAction()方法中可用的参数类型。例如:doAction(Stringa,Integerb)我希望每个类都能够以编程方式生成具有各种参数的doAction()方法,并在检查时即时生成。方法的主体可以为空。 最佳答案 这并不简单。一旦类加载器加载了一个

java - Java 类可以在运行时向自身添加方法吗?

一个类可以在运行时给自己添加一个方法吗(比如从一个staticblock中),这样如果有人在这个类上执行反射,他们会看到新方法,即使它不是在编译时定义的?背景:按照惯例,我正在使用的框架需要定义具有doAction(...)方法的Action类。框架在运行时检查这些类以查看它们的doAction()方法中可用的参数类型。例如:doAction(Stringa,Integerb)我希望每个类都能够以编程方式生成具有各种参数的doAction()方法,并在检查时即时生成。方法的主体可以为空。 最佳答案 这并不简单。一旦类加载器加载了一个

java - 如何获取成员变量的注释?

我想知道一个类的一些成员变量的注解,我使用BeanInfobeanInfo=Introspector.getBeanInfo(User.class)来自省(introspection)一个类,并使用BeanInfo.getPropertyDescriptors(),查找具体的属性,并使用Classtype=propertyDescriptor.getPropertyType()获取属性的Class。但是我不知道如何将注解添加到成员变量中?我尝试了type.getAnnotations()和type.getDeclaredAnnotations(),但都返回了类的注释,而不是我想要的。例

java - 如何获取成员变量的注释?

我想知道一个类的一些成员变量的注解,我使用BeanInfobeanInfo=Introspector.getBeanInfo(User.class)来自省(introspection)一个类,并使用BeanInfo.getPropertyDescriptors(),查找具体的属性,并使用Classtype=propertyDescriptor.getPropertyType()获取属性的Class。但是我不知道如何将注解添加到成员变量中?我尝试了type.getAnnotations()和type.getDeclaredAnnotations(),但都返回了类的注释,而不是我想要的。例

java - 如何在运行时从文件夹或 JAR 加载类?

我正在尝试制作一个Java工具来扫描Java应用程序的结构并提供一些有意义的信息。为此,我需要能够从项目位置(JAR/WAR或只是一个文件夹)扫描所有.class文件,并使用反射来了解它们的方法。事实证明这几乎是不可能的。我可以找到很多基于URLClassloader的解决方案,这些解决方案允许我从目录/存档加载特定类,但没有一个解决方案允许我在没有任何关于类名或包结构的信息的情况下加载类。编辑:我觉得我表达得很糟糕。我的问题不是我无法获得所有的类文件,我可以通过递归等来做到这一点并正确定位它们。我的问题是为每个类文件获取一个类对象。 最佳答案