给出字段值而不说明字段的名称

时间:2013-06-23 04:13:26

标签: java reflection

我的程序有一个包含大量字段的类。我需要能够从两个以前存在的实例创建此类的新实例。它会随机选择从前两个实例中的哪一个获得哪些字段。

显然我可以做一些这样的事情:

if(random.nextBoolean())
    this.value = a.value;
else:
    this.value = b.value;

但是,我一直对ClassName.class中的一些方法很感兴趣。我之前尝试过研究过这个问题,但我从来没有运气。那么让我告诉你我想做什么:

for(int i = 0; i < Specimen.class.getDeclaredFields().length; i++){
if(random.nextBoolean())
    this.fields[i] = a.fields[i];
else
    this.fields[i] = b.fields[i];

我的理解是,反射是不可能的,还有另一种方法吗?

1 个答案:

答案 0 :(得分:1)

Field只包含该字段的值。

要获取字段的值,您需要使用set / get方法之一。例如。

if(random.nextBoolean())
    this.fields[i].set(a.fields[i].get());
else
    this.fields[i].set(b.fields[i].get());