2 notos Notos 于 2016.09.19 19:16 提问

Field Java反射疑问,为什么要有Field.get(object)方法

public class Father {
public int a = 3;
}

public class Test {

public static void main(String[] args) {
    try {
        Field test = Father.class.getField("a");
        int forA = (int)test.get(new Father());
        System.out.println(forA);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

在上述Java反射得到类的成员变量值的时候想不明白一个问题。
这个test.get(new Father())有什么作用,在声明test的时候不是已经说明了是Father类的成员变量了吗?
为什么java API不提供一个getValue的方法来获取这个字段的值呢?而是感觉要再次反射去找Father类一样?

4个回答

quasimodo_es
quasimodo_es   2016.09.19 19:24

没有实例化怎么会有值呢?!

qq_25673113
qq_25673113   2016.09.19 20:04

在很多框架中会用到反射机制,反射机制可以像一个接口,你给他一个类或者名字,它可以获取你这类里面的字段,字段的属性,或者创建一个实例等等

Mr_dsw
Mr_dsw   Ds   Rxr 2016.09.19 22:08

test.get(new Father())拿到对象实例的 域成员的值。即获得Father中的a的值

Royal_lr
Royal_lr   Ds   Rxr 2016.09.20 15:56

get方法获取值不是一样的吗

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!