如果是静态变量,即类变量
需要field.get(这里传Class实例)
如果是对象变量
需要field.get(这里传对象)
这个参数是必须的,否则get无法确定你要从哪儿获取这个field的值
例子:
Field field = Integer.class.getDeclaredField("MAX_VALUE");//静态变量
System.out.println(field.get(Integer.class));//输出2147483647 即Integer.MAX_VALUE
Integer i = new Integer(100);
field = Integer.class.getDeclaredField("value");//非静态
field.setAccessible(true);
field.get(i);//这里必须用对象
System.out.println(field.get(i));//输出100
追问恩。你说的我明白了。可是我有几个疑问
1:如果是静态变量,get()方法就传一个null就可以了吧?
2:Field的对象实例是从某个Class类对象的getDeclaredField()方法获得的,就是说, 这个fidld实例只绑定字段,而不知道是哪个类实例的,对吧?
追答1.不能传null,空对象的成员是不可能有值的,要么是类的,要么是对象的。如果是类的,需要传代表这个类的类对象,就是class Class。
2,对的,只知道是哪个类,不知道对象