2010-02-10 22 views
6

Sto osservando un codice in cui le annotazioni a livello di classe vengono utilizzate per aggiungere proprietà a determinate classi, in seguito utilizzando la riflessione queste proprietà sono accessibili e utilizzate.annotazioni a livello di classe vs interfacce

La mia domanda: Quando è opportuno utilizzare un'annotazione per aggiungere nuovi campi a una classe, invece di utilizzare un'interfaccia. Quali sono alcuni vantaggi e svantaggi di questo?

+0

Sono un po 'confuso su cosa intendi utilizzando le interfacce per aggiungere campi a una classe. Intendi usare un'annotazione per aggiungere metodi e metodi getter-setter? – Uri

+2

Sarebbe in grado di condividere lo snippet anche qui? Ci aiuterà sicuramente, a capire la tua domanda. –

risposta

8

Non so che le annotazioni possano mai sostituire un'interfaccia, ma posso vedere il fascino. Tutto dipende però dalle implementazioni.

Le annotazioni forniscono metadati per descrivere ulteriormente il codice, che un utente (la maggior parte delle volte) interpreta in fase di esecuzione utilizzando le riflessioni. Utilizzando un'interfaccia, questo contratto di implementazione è chiaramente definito.

si potrebbe avere:

interface CrudDao<T> { 
    Serializable create(T t); 
    T read(Serializable id); 
    void update(T t); 
    void delete(T t); 
} 

questo sarebbe un contratto di difficile attuazione, e sarebbe probabilmente incorrere in una sorta di metodo di concatenamento.

Invece si potrebbe fare qualcosa di simile:

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 } 
} 

Lo svantaggio è che sarebbe complicato da utilizzare:

class CrudFactory { 
    long create(Class clazz, Object obj) { 
     // loop through methods 
     // find method with @Create 
     // call method 
    }  
} 

annotazioni in questo esempio potrebbe essere eccessivo la maggior parte del tempo, IMO . C'è qualcosa da dire su un contratto ben definito e ben documentato.

Problemi correlati