草庐IT

Reflection

全部标签

java - 当 MethodHandle 更快时,为什么要使用反射来访问类成员?

随着Java7的发布,MethodHandle,它允许用户调用一个方法,就像使用它的底层字节码一样。特别是MethodHandles.Lookup类提供工厂方法来创建方法句柄来访问类成员:ThefactorymethodsonaLookupobjectcorrespondtoallmajorusecasesformethods,constructors,andfields.Eachmethodhandlecreatedbyafactorymethodisthefunctionalequivalentofaparticularbytecodebehavior.从功能上讲,这或多或少等同于

Java 反射 : Getting fields and methods in declaration order

有没有办法使用反射按声明顺序获取类声明的字段(和方法)?根据文档,getFields()、getDeclaredFields()等返回的方法和字段的顺序是未定义的。可以使用Javareflection:Istheorderofclassfieldsandmethodsstandardized?中建议的注释来指定类似索引的内容。有没有更好的选择,即不必手动指定索引?现在在你问我需要这个做什么之前:我们有一个方法,它以一个相当大的数据结构作为输入并对其执行冗长的计算。为了创建单元测试,我们创建了一个方法,该方法接受一个输入对象和一个输出实例,并创建Java源代码(设置输入、调用计算方法以及

Java 反射 : Getting fields and methods in declaration order

有没有办法使用反射按声明顺序获取类声明的字段(和方法)?根据文档,getFields()、getDeclaredFields()等返回的方法和字段的顺序是未定义的。可以使用Javareflection:Istheorderofclassfieldsandmethodsstandardized?中建议的注释来指定类似索引的内容。有没有更好的选择,即不必手动指定索引?现在在你问我需要这个做什么之前:我们有一个方法,它以一个相当大的数据结构作为输入并对其执行冗长的计算。为了创建单元测试,我们创建了一个方法,该方法接受一个输入对象和一个输出实例,并创建Java源代码(设置输入、调用计算方法以及

java - 通过反射访问Java中的私有(private)变量

这个问题在这里已经有了答案:IsitpossibleinJavatoaccessprivatefieldsviareflection[duplicate](3个回答)关闭9年前。我正在尝试编写一个使用反射在类中获取私有(private)字段的方法。这是我的类(class)(本示例已简化):publicclassSomeClass{privateintmyField;publicSomeClass(){myField=42;}publicstaticObjectgetInstanceField(Objectinstance,StringfieldName)throwsThrowable{

java - 通过反射访问Java中的私有(private)变量

这个问题在这里已经有了答案:IsitpossibleinJavatoaccessprivatefieldsviareflection[duplicate](3个回答)关闭9年前。我正在尝试编写一个使用反射在类中获取私有(private)字段的方法。这是我的类(class)(本示例已简化):publicclassSomeClass{privateintmyField;publicSomeClass(){myField=42;}publicstaticObjectgetInstanceField(Objectinstance,StringfieldName)throwsThrowable{

java - 如何反射性地调用以 null 作为参数的方法?

我正在尝试在Java中反射性地调用此方法:publicvoidsetFoo(ArrayListfoo){this.foo=foo;}问题是我想将null作为null传递,这样foo就变成了null。但是,在以下方法中,它假设没有参数,我得到IllegalArgumentException(wrongnumberofarguments):method.invoke(newFooHolder(),null);//-----------------------------^-Iwantnulltobepassedtothemethod...这是如何实现的? 最佳答

java - 如何反射性地调用以 null 作为参数的方法?

我正在尝试在Java中反射性地调用此方法:publicvoidsetFoo(ArrayListfoo){this.foo=foo;}问题是我想将null作为null传递,这样foo就变成了null。但是,在以下方法中,它假设没有参数,我得到IllegalArgumentException(wrongnumberofarguments):method.invoke(newFooHolder(),null);//-----------------------------^-Iwantnulltobepassedtothemethod...这是如何实现的? 最佳答

java - 关于 java : get `String[].class` from `String.class` , 如果 `String.class` 是 "runtime type"怎么办?

这个问题在这里已经有了答案:ObtainingthearrayClassofacomponenttype(5个回答)关闭4年前。这是一个变量Classcls,现在我想再买一个ArrayClassObject哪个组件类型是cls.例如,如果cls=String.class,我想得到String[].class;如果cls=int.class,我想得到int[].class,我应该怎么办?你看,很容易得到String.class来自String[].class:ClassarrayCls=String[].class;if(arrayCls.isArray()){Classcls=arra

java - 关于 java : get `String[].class` from `String.class` , 如果 `String.class` 是 "runtime type"怎么办?

这个问题在这里已经有了答案:ObtainingthearrayClassofacomponenttype(5个回答)关闭4年前。这是一个变量Classcls,现在我想再买一个ArrayClassObject哪个组件类型是cls.例如,如果cls=String.class,我想得到String[].class;如果cls=int.class,我想得到int[].class,我应该怎么办?你看,很容易得到String.class来自String[].class:ClassarrayCls=String[].class;if(arrayCls.isArray()){Classcls=arra

java - 使用反射设置字段值

我正在处理一个非开源项目,我需要修改它的一个或多个类。在一个类中是以下集合:privateMapttp=newHashMap();我需要做的就是在这里使用反射并使用concurrenthashmap。我试过下面的代码,但它不起作用。Fieldf=..getClass().getDeclaredField("ttp");f.setAccessible(true);f.set(null,newConcurrentHashMap()); 最佳答案 希望这是您正在尝试做的事情:importjava.lang.reflect.Field;im