2013-06-23 86 views
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]; 

這是我的理解,這是不可能的反思,有沒有另一種方式?

+0

這是可能的反思。您需要首先將字段更改爲可訪問(如果它是私密的)。 – Steven

+0

是的,謝謝史蒂文。在另一個stackoverflow問題,他們說這是不可能的反射到幾乎相同的問題。 – csga5000

回答

1

Field擁有更多然後只是該字段的值。

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

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

謝謝!太酷了。我不認爲字段會被全部使用,因爲它們不是特定於類的,並且不能保存/設置類特定的數據。但這是有道理的。你真棒。 – csga5000

+0

大聲笑,我已經寫了28我/我需要的28條if/else語句中的13條。 – csga5000

相關問題