草庐IT

反射面

全部标签

java - 使用反射解包数组

我正在尝试解压缩从反射对象字段中获得的数组。我将通用字段的值设置为一个对象。如果它是一个数组,那么我想将我的通用对象转换为一个数组(无论其类型如何)并提取其内容fields[i].setAccessible(true);Stringkey=fields[i].getName();Objectvalue=fields[i].get(obj);if(value.getClass().isArray()){unpackArray(value);}在我的unpackArray方法中,我尝试将对象值转换为java.util.Arrays、java.reflect.Array和Array[],但每

java - 在 Eclipse 插件中使用时反射库不起作用

我已经使用Reflections开发了一个应用程序用于查询具有特定注释的所有类的库。在我决定从我的应用程序中创建一个Eclipse插件之前,一切都非常顺利。然后反射停止工作。鉴于我的应用程序在不属于Eclipse插件的情况下工作正常,我认为这应该是类加载器问题。因此,我向我的Reflections类添加了插件激活器类的类加载器、上下文类加载器以及我能想到的所有其他类加载器,但没有任何成功。这是我的代码的简化版本:ConfigurationBuilderconfig=newConfigurationBuilder();config.addClassLoaders(thePluginAct

Java 反射 : Invoking Setter and Getter method for collection type Object

我有两个不同的用户定义对象包.....1)ws.lender.dto(allObjectsexistsinthispackagearesourceside).2)copl.com.dto(allObjectsexistsinthispackagearedestinationside).两侧的对象层次结构和对象名称不同。我想按字段将源端对象复制到目标端对象字段或通过使用反射的getter和setter。例如源端对象packagews.lender.dto;@XmlAccessorType(XmlAccessType.FIELD)@XmlType(name="CustomerAddress

java - 可以用java中使用反射的方法引用替换

我在intellij中有这段代码:returncollection.stream().anyMatch(annotation->method.isAnnotationPresent(annotation));编译器告诉我“method.isAnnotationPresent(annotation)”可以用方法引用替换,我不知道该怎么做,因为它有一个参数。有人知道怎么做吗? 最佳答案 您可以替换您的代码以使用方法引用(查看here),如下所示:returncollection.stream().anyMatch(method::isA

java - 反射调用方法还是使用继承的固定方法?

我正在开发一个小型Web库,想知道是否应该反射式地调用GET、POST、PUT等HTTP处理程序方法。固定方法首先是带有ifelse...block的变体调用基类中给出的方法,它们有一个默认实现,返回一个错误给客户端。由于对不受支持的方法的请求需要带有允许方法的header,因此我需要反射(reflection)性地查找哪些方法实际上被覆盖了(顺便说一下,就像ServletAPI所做的那样)。publicabstractclassResource{publicResponsehandle(HttpServletRequestrequest){Stringaction=request.g

java - 反射性能 : quality byte code in JVM

编辑2:具有完全面向对象实现的程序是否具有高性能?大多数framework都是用它的全部功能编写的。但是,反射也被大量用于实现它,例如AOP和依赖注入(inject)。反射的使用在一定程度上影响了性能。那么,使用反射是一种好的做法吗?除了编程语言构造的反射之外,还有其他选择吗?应在多大程度上使用反射? 最佳答案 反射,就其本身和本质而言,是缓慢的。参见thisquestion更多细节。这是由几个原因造成的。JonSkeetexplainsitnicely:Checkthatthere'saparameterlessconstruct

java - 通过反射获取第一个 parent 的领域

我正在尝试获取对象的第一个父对象的字段和值。我当前的代码是这样的:Classcls=obj.getClass();Field[]fields=cls.getDeclaredFields();for(Fieldfield:fields){StringfieldName=field.getName();StringfieldValue=field.get(obj);}我的类结构是这样的:classA{intx;}classBextendsA{inty;}classCextendsB{intz;}现在,我将一个C对象传递给该方法,我想从C和B中获取所有字段,而不是从A中获取。有没有办法做到这

Java - 使用反射获取对静态类的引用

在Java中,是否可以使用反射访问静态类(嵌套)的实例?假设我在包Package1.SubPackage.SubSubPackage中定义了以下2个类:publicclassMyMainClass{publicstaticclassSalesObjectGrouper1{publicstaticfinalGrouperContextCONTEXT=newGrouperContext("MyDate");}privatestaticclassSalesObjectGrouper2{publicstaticfinalGrouperContextCONTEXT=newGrouperConte

Java如何通过反射检查字段是否已初始化或是否为默认值?

所以,应该是直截了当的问题。假设我有一个包含很多字段的类,例如:Stringthizz;longthat;booleanbar;我如何通过反射查看字段thizz、that和bar是否已初始化或保留为默认值空、0和假? 最佳答案 您只有7种原始类型和一种引用类型需要检查。如果将所有数字类型组合在一起,则只有四个值需要检查。Objecto=for(Fieldfield:o.getClass().getDeclaredFields()){Classt=field.getType();Objectv=field.get(o);if(t==b

java - 使用反射调用方法会带来哪些安全问题?

我正在开发一个包含主机和客户端的项目,其中主机可以向客户端发送命令(通过套接字)。我确定使用JSON进行通信效果最好。例如:{"method":"toasty","params":["helloworld",true]}在这个例子中,当这个JSON字符串被发送到客户端时,它会被处理并在客户端中运行一个合适的方法:publicabstractclassClientProcessor{publicabstractvoidtoasty(Strings,booleanbool);publicabstractvoidshutdown(inttimer);privateMethod[]method