我的程序有一個包含大量字段的類。我需要能夠從兩個先前存在的實例中創建此類的新實例。它會隨機選擇從前兩個實例中的哪一個獲得哪些字段。給出字段值而沒有說明字段的名稱
很顯然,我可能只是做了一堆的這些:
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];
這是我的理解,這是不可能的反思,有沒有另一種方式?
這是可能的反思。您需要首先將字段更改爲可訪問(如果它是私密的)。 – Steven
是的,謝謝史蒂文。在另一個stackoverflow問題,他們說這是不可能的反射到幾乎相同的問題。 – csga5000