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个回答

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

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐