0

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

显然我可以做一堆这些:

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];

我的理解是反射是不可能的,还有其他方法吗?

4

1 回答 1

1

Field包含的不仅仅是该字段的值。

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

if(random.nextBoolean())
    this.fields[i].set(a.fields[i].get());
else
    this.fields[i].set(b.fields[i].get());
于 2013-06-23T04:17:05.700 回答