我如何在Java中使用反射来访问内部类变量值? [英] How i can access inner class variable value using reflection in java?
本文介绍了我如何在Java中使用反射来访问内部类变量值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有像下面这样的类,其中包含多个内部类:
Suppose i have class like below with multiple inner classes :
public class Constants {
public class Class1 {
public static final String IODATA = "IOData";
public static final String HUB_INPUTS = "HubInputs";
}
public class Class2 {
public static final String CLASS_INPUTS = "Class Inputs";
public static final String AUXILIARIES_ON_BUTTON = "Auxiliaries On Button";
}
public class Class3 {
public static final String CLASS_INPUTS = "Class Inputs";
public static final String AUXILIARIES_ON_BUTTON = "Auxiliaries On Button";
}
}
我想访问所有内部类变量,然后可以编写如下代码,然后获取变量名称和值:
I want to access all inner class variable then i can write code like below and i can get the variable name and value:
public static void getClassNameMap() throws Exception {
Constants cons = new Constants();
Constants.Class1 class1 = cons.new Class1();
for (Field fields : class1 .getClass().getFields()) {
System.out.println(fields.get(projectObjectCons).toString() + "--" + fields.getName());
}
}
但是一些如何获取所有内部类名称的String数组的方法:
But some how i get array of String of all inner classes name like :
String []arr = {"Class1","Class2","Class3"};
如何使用这些String类名获取所有内部类变量和值? 因为我无法使用其字符串名称来创建类实例. 请帮帮我.
how can i get all inner class variable and value using these String class name ??? Because i can not make class instance using its string name. Please help me out.
推荐答案
Class[] classes = Constants.class.getDeclaredClasses();
for(Class innerClass: classes){
//System.out.println(innerClass.getName());
Field[] fields = innerClass.getDeclaredFields();
for(Field field : fields){
//System.out.println(field.getName());
//your implementation
}
}
此代码将符合您的期望.
This code will match your expectations.
谢谢
这篇关于我如何在Java中使用反射来访问内部类变量值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文