まず、メンバ変数と静的変数へのアクセス
import org.junit.Test;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class AppTest {
public static String hehe = "hehe";
public String xixi = "xixi";
@Test
public void test() {
Field[] fields = AppTest.class.getDeclaredFields();
try {
for (Field field : fields) {
field.setAccessible(true);
System.out.println(field.getName());
if(field.getType().toString().endsWith("java.lang.String") && Modifier.isStatic(field.getModifiers()))
System.out.println(field.getName() + " , " + field.get(AppTest.class));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
注:Modifier.isStatic(field.getModifiers());プロパティは静的変数であるかどうかをチェック
第二には、反射し内部の静的メンバ変数の値を取得します
public class Goods {
static class apple{
public static String version = "iphone6s[是手机不是吃的苹果]";
public static String date = "生产日期 2017-06-13";
}
}
import java.lang.reflect.Field;
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();
}
}
}
}
}