2010-06-06 59 views
2

如果你有一個包含getFoo方法的bean,當你詢問foo的值時,你正在使用的任何框架如何知道如何調用getFoo方法?這是使用反射API完成的嗎?或者它使用註釋以某種方式完成?很顯然,我知道如何根據屬性的名稱來派生方法,我只是不知道該方法是如何被調用的。框架如何調用javabeans上的get和set方法?

回答

0

實際的方法調用確實是通過反射完成的。你可以看看BeanUtil,特別是MethodUtil來源。要反射地調用方法,請使用

method.invoke(bean, parameters); 

查看reflection tutorial的示例。

1

Java按方法名稱約定使用「屬性」。對於類型爲T的房產camelCase,您應該定義public T getCamelCase()public void setCamelCase(T t)中的一個或兩個。您可以使用此代碼對Bean測試性能:

Introspector.getBeanInfo (bean.getClass()).getPropertyDescriptors(); 

注意,因爲屬性不是第一類對象和依靠命名約定,很容易不小心打破這種pseudoproperty。例如。如果您定義了setFoo(int)setFoo(int, boolean),則班級中不會有任何屬性foo