Durante la lettura sulle interfacce Marker sono incappato il seguente sito: Item 37: Use marker interfaces to define types
qui, secondo Joshua Bloch ci sono due vantaggi di interfacce Marker oltre le annotazioni Marker.Marker annotazione vs Marker interfaccia
interfacce Marker definiscono un tipo che viene implementato da istanze classe marcata; le annotazioni dei marcatori no. L'esistenza di questo tipo di consente di rilevare gli errori in fase di compilazione che non è possibile acquisire fino al runtime se si utilizza un'annotazione marcatore.
Un altro vantaggio delle interfacce marcatore rispetto alle annotazioni dei marker è che possono essere targetizzati in modo più preciso. Se un tipo di annotazione è dichiarato con la destinazione
ElementType.TYPE
, può essere applicato a qualsiasi classe o interfaccia . Supponiamo che tu abbia un indicatore applicabile solo alle implementazioni di una particolare interfaccia. Se lo si definisce come interfaccia marker, è possibile estendere l'interfaccia unica a che è applicabile, garantendo che tutti i tipi contrassegnati siano anche sottotipi dell'interfaccia unica a cui è applicabile.
OK, Primo punto è capito, ma non sono sicuro se ho ben capito il 2 ° punto in modo corretto:
Se un tipo di annotazione viene dichiarata con l'obiettivo
ElementType.TYPE
, può essere applicato a qualsiasi classe o interfaccia
Allo stesso modo, se si dispone di un'interfaccia marker, anche quella può essere applicata a qualsiasi classe o interfaccia. Non sta dicendo la stessa cosa sulle annotazioni dei marker e sulle interfacce dei marker? Come può essere mirata in modo più preciso un'interfaccia marcatore?
Il 2 ° punto menziona anche che:
si può avere [il marcatore Interface] estendere l'unica interfaccia a cui è applicabile, garantendo che tutti i tipi marcati sono anche sottotipi della suola interfaccia a cui è applicabile.
Non potete anche raggiungere questo obiettivo con le annotazioni, utilizzando il @Inherited
meta-annotazione?
Ho modificato la domanda per renderla un po 'più facile da capire. Se cambio troppo, puoi ovviamente cambiarlo. – Kapep