2010-02-10 58 views
6

我正在查看一些代碼,其中使用類級別註釋爲某些類「添加」屬性,稍後使用反射訪問和使用這些屬性。類級別註釋與接口

我的問題: 什麼時候使用註釋向類中添加新字段是合適的,而不是使用接口。這有什麼好處和缺點?

+0

我對使用接口向類中添加字段的含義有些困惑。你的意思是使用註釋來添加方法和getter-setter方法嗎? – Uri 2010-02-10 04:35:24

+2

你也可以在這裏分享片段嗎?它肯定會幫助我們理解你的問題。 – 2010-02-10 04:46:32

回答

8

我不知道註釋會替換一個界面,但我可以看到它的魅力。儘管如此,這一切都取決於實現。

註解提供元數據以進一步描述代碼,消費者(大多數時間)在運行時使用反射來解釋代碼。使用接口,這個實施合同是明確定義的。

你可以有:

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 。關於明確定義的,有據可查的合同有一些要說的。