在實際程式設計中,我們常常需要一些用來包裝值物件的類別,例如Student、 Employee 、Order,這些類別中往往沒有業務方法,只是為了把需要處理的實體物件進行封裝,有這樣的特徵:
# #符合這些特徵的類,稱為JavaBean;
內省
只要類別中有getXXX方法,或setXXX方法,或同時有getXXX及setXXX方法,其中getXXX方法沒有方法參數,有回傳值;setXXX方法沒有回傳值,有一個方法參數;那麼內省機制就認為XXX為一個屬性;
例如下面程式碼
Employee類別中根本沒有聲明age屬性,只是聲明了這樣的getter和setter.內省機制就認為age是屬性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
相關API
: 為取得JavaBean屬性、事件、方法提供了標準方法;通常使用其中的getBeanInfo方法傳回BeanInfo物件;
:不能直接實例化,通常透過Introspector類別傳回該類型對象,提供了傳回屬性描述子物件(PropertyDescriptor)、方法描述子物件(MethodDescriptor) 、 bean描述子(BeanDescriptor)物件的方法;
:用來描述一個屬性,該屬性有getter及setter方法;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
我們也可以透過反射來呼叫這裡取得的get或set方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
很多框架都使用了內省機制來擷取物件的屬性,定義屬性名稱時,名字最好起碼以兩個小寫字母開頭,例如stuName,而不要使用sName,某些情況下,可能會導致檢索屬性失敗;內省屬性的注意事項
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
|
以上是Java內省機制怎麼實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!