2013-10-09 17 views
0

我有一個方法,我想傳遞一個對象,方法應該更新的屬性。例如:如何傳遞哪些對象屬性應該在Java中更新?

public MyModel myMethod(MyModel myObject, MyClassProperty theProperty, String someValue) { 
    myObject.theProperty = someValue; 
    return myObject; 
} 

爲此,我當然不需要的方法,但還有很多的方法回事。我只是把它歸結爲它的本質。

有沒有人知道我可以傳遞一個對象的屬性作爲參數,應該更新? (這是一個有點難以把這個詞,但我希望你明白我的意思)

+0

不使用反射,NO,我猜。 –

+0

我認爲你試圖強制語言像JavaScript一樣。你想要的是可以使用反射,但它不是你在Java中做事情的方式。我寧願重新設計代碼以使其更加標準和安全(在現實世界的項目中使用反射黑客並不可取)。 –

回答

1

試試這個:

public Object myMethod(Object myObject, String thePropertyName, Object someValue) 
{ 
    try 
    { 
     myObject.getClass().getField(thePropertyName).set(myObject, someValue); 
    } catch (NoSuchFieldException noFieldException) { 
     throw new RuntimeException(noFieldException); 
    } catch (IllegalAccessException illegalAccessException) { 
     throw new RuntimeException(illegalAccessException); 
    } 
} 

希望這有助於:)

+0

真棒,作品像魅力!儘管@MisterSmith指出,這似乎不是Java非常。但地獄,它的工作! – kramer65

+0

啊,是的。打擾一下。完成! – kramer65

+0

很高興我能幫忙!另外,tnx編輯@ kramer65 :) –