我的程序有一个包含大量字段的类。我需要能够从两个以前存在的实例创建此类的新实例。它会随机选择从前两个实例中的哪一个获得哪些字段。
显然我可以做一些这样的事情:
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];
我的理解是,反射是不可能的,还有另一种方法吗?
答案 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());