昨晚,一同事问到我,怎么利用java反射解析内部类静态成员变量的值,于是顺手写下了。
废话不多说,直接上代码!
待解析类结构如下:
/**
* @Author changle
* @Time 17/6/13.
* @Desc to do
*/
public class Goods {
static class apple{
public static String version = "iphone6s[是手机不是吃的苹果]";
public static String date = "生产日期 2017-06-13";
}
}
获取内部类静态成员变量工具类:
/**
* @Author changle
* @Time 17/6/13.
* @Desc 获取静态内部类静态变量
*/
public class TestParseInnerProValue {
public static void main(String[] args) {
Class<?> clasz = Goods.class;
printInnerParamValue(clasz);
}
public static void printInnerParamValue(Class<?> clasz){
Class innerClazz[] = clasz.getDeclaredClasses();
for(Class claszInner : innerClazz){
Field[] fields = claszInner.getDeclaredFields();
for(Field field : fields){
try {
Object object = field.get(claszInner);
System.out.println("获取到的feild, name=" + field.getName()+", value="+ object.toString());
//打印内容
/*
* 获取到的feild, name=version, value=iphone6s[是手机不是吃的苹果]
获取到的feild, name=date, value=生产日期 2017-06-13
* */
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
}