草庐IT

Reflection

全部标签

java - 为什么泛型类型参数上的注释对于嵌套类型不可见?

我没有得到以下代码的行为:https://gist.github.com/tomaszalusky/3e3777b4fd0c6096f3f707bb19b50b52-查看嵌入式:importjava.lang.reflect.*;importjava.util.*;importjava.lang.annotation.ElementType;importjava.lang.annotation.Retention;importjava.lang.annotation.RetentionPolicy;importjava.lang.annotation.Target;publicclas

java - 使用反射获取字段值

我无法获取字段值。我想做的是在运行时获取对象。请让我知道哪里出错了。测试类importjava.lang.reflect.Field;publicclassTest{publicstaticvoidmain(String[]args)throwsClassNotFoundException,NoSuchFieldException,SecurityException,IllegalArgumentException,IllegalAccessException{finalFieldfield=Class.forName("com.logging.EX").getDeclaredFiel

java - 如何检查方法是否在 Java 中返回 Collection<Foo>?

我想根据方法的签名检查接口(interface)中是否存在方法。该方法应具有的签名是:CollectionmethodName(Spamarg0,Eggsarg1,...)我可以通过Class.getMethods()找到方法然后用method.getName()分别找到名称、参数和返回类型,method.getParameterTypes()和method.getReturnType().但是我要将返回类型与什么进行比较以确保只有返回Collection的方法被选中,而不是其他集合?method.getReturnType().equals(Collection.class)因为以上

java - 我可以打印出变量名吗?

我创建了一个编号。常量变量的个数,超过1000个,这些常量是唯一的整数。publicstaticfinalFOO335343publicstaticfinalBAR234234publicstaticfinalBEZ122424............有没有办法打印出FOO、BAR和BEZ,Java中名称的变量?我不熟悉java反射。我不知道这是否有帮助。if(FOO==335343)--->output"FOO"if(BAR==234234)--->ouptut"BAR"....其实后面问这个问题是想把log写入文件说System.out.println("Thistimetheou

Java:如何复制一个对象,使其来自同一个子类?

我尝试使用一个简单的示例来更好地理解:我有一个类Tool和扩展类Tool的子类:Hammer,锯。两者都定义了一些字段,如weight,并且都用自己的实现覆盖方法getCost。Toolfirst_tool=newHammer();Toolsecond_tool=newSaw();我需要Tool类中的一个方法,它将复制任何工具,这样,first_tool_copy来自与first_tool相同的子类。我怎样才能使这成为可能?我需要这样的东西:/*Copytool,changeparametersofcopy,theoriginalwon'tchange*//*first_tool_co

java - 使用 Gson 加载对象

如果这是微不足道的或不可能的,请原谅我,但我周一早上在这里。我想创建一个方法来实现Gson库中的一些方法来加载一些设置对象。基本上,我有一堆不同的设置对象,但我不想重写每个类的加载方法,我想要这样的东西:publicclassConfigLoader{publicstaticvoidmain(finalString[]args){finalConfigurationSettingsloadedConfigSettigs=load("testSettings.json",ConfigurationSettings.class);finalAlternativeConfigurationS

java - 通过java中的反射设置对象字段的值

首先,我有一个这样的对象:publicclassEntity{publicintdata1;publicStringdata2;publicfloatdata3;publicSubEntitydata4;}publicclassSubEntity{publicintid;publicSubEntity(intid){tis.id=id;}}还有一个HashMap:HashMapmap=newHashMap();map.put("data1",1);map.put("data2","name");map.put("data3",1.7);map.put("data4",newSubEnt

java - 优雅地处理 TypeMirror 和 Class

我刚刚在这里开始使用javaxAnnotationProcessing,遇到了一个丑陋的案例。我将在描述我的学习过程的一系列伪代码行中对其进行说明:MyAnnotationann=elementIfound.getAnnotation(MyAnnotation.class);//Classclazz=ann.getCustomClass();//CanthrowMirroredTypeException!//Classeswithinthecompilationunitdon'texistinthisformatcompiletime!//Searchwebandfindthisalt

java - 为什么我通过反射调用 main 时参数个数错误?

我有一个类对象,我想调用一个静态方法。我有以下代码。Methodm=cls.getMethod("main",String[].class);System.out.println(m.getParameterTypes().length);System.out.println(Arrays.toString(m.getParameterTypes()));System.out.println(m.getName());m.invoke(null,newString[]{});这打印:1[class[Ljava.lang.String;]main但随后它抛出:IllegalArgumen

java - 如何实例化一个 ArrayList<?> 并通过 Java 反射添加一个项目?

我正在编写一个将xml转换为Java对象的反序列化方法。我想动态地执行此操作并避免编写对特定类型的硬编码引用。例如,这是我的一个类(class)的简化版本。publicclassMyObject{publicArrayListSubObjects=newArrayList();}这是该方法的精简版:publicclassSerializer{publicstaticTfromXml(Stringxml,Classc){Tobj=c.newInstance();Fieldfield=obj.getClass().getField("SubObjects");//help:createin