6
我正在查看一些代碼,其中使用類級別註釋爲某些類「添加」屬性,稍後使用反射訪問和使用這些屬性。類級別註釋與接口
我的問題: 什麼時候使用註釋向類中添加新字段是合適的,而不是使用接口。這有什麼好處和缺點?
我正在查看一些代碼,其中使用類級別註釋爲某些類「添加」屬性,稍後使用反射訪問和使用這些屬性。類級別註釋與接口
我的問題: 什麼時候使用註釋向類中添加新字段是合適的,而不是使用接口。這有什麼好處和缺點?
我不知道註釋會替換一個界面,但我可以看到它的魅力。儘管如此,這一切都取決於實現。
註解提供元數據以進一步描述代碼,消費者(大多數時間)在運行時使用反射來解釋代碼。使用接口,這個實施合同是明確定義的。
你可以有:
interface CrudDao<T> {
Serializable create(T t);
T read(Serializable id);
void update(T t);
void delete(T t);
}
這將是實現一個繁瑣的合同,可能會招致某種方法鏈接的。
相反,你可以這樣做:
class SomeDao {
@Create
long create(SomeEntity e) { // code }
@Read
SomeEntity read(long id) { // code }
@Update
void update(SomeEntity e) { // code }
@Delete
void delete(SomeEntity e) { // code }
}
的缺點是,它會很麻煩的使用方法:
class CrudFactory {
long create(Class clazz, Object obj) {
// loop through methods
// find method with @Create
// call method
}
}
批註在這個例子是矯枉過正的大部分時間,IMO 。關於明確定義的,有據可查的合同有一些要說的。
我對使用接口向類中添加字段的含義有些困惑。你的意思是使用註釋來添加方法和getter-setter方法嗎? – Uri 2010-02-10 04:35:24
你也可以在這裏分享片段嗎?它肯定會幫助我們理解你的問題。 – 2010-02-10 04:46:32