2012-04-28 8 views
11

Leggere di recente sulle annotazioni JCIP e sembrano interessanti. Sono andato al sito Web e ho dato un'occhiata alla fonte. L'unico problema è che il vaso src contiene solo le annotazioni ... Non vedo dove posso trovare i processori di annotazione che effettivamente do nulla! Sto solo cercando nel posto sbagliato, o queste non sono vere annotazioni Java (nel senso, non c'è modo di far rispettare @Immutable quando è usato per contrassegnare una classe)?Come codificare con JCIP (Java Concurrency in Practice)

  • @Immutable
  • @GuardedBy
+0

Si prega di modificare la domanda e spiegare cosa è JCIP. Suppongo tu intenda Concurrency Java in Practice ma dovrebbe essere espanso. E non ho familiarità con quali annotazioni intendi. – Gray

+0

Scusate per la vaghezza lì! – IAmYourFaja

risposta

10

FindBugs supporta tali annotazioni. Il supporto per tali annotazioni e altri è descritto in this documentation page.

+0

Quindi le annotazioni JCIP - qual è il loro punto? Sono solo annotazioni "vuote" usate negli esempi di JCIP per aiutare i lettori a seguire, o c'è una sorta di alleanza tra JCIP e FindBugs? – IAmYourFaja

+3

Le annotazioni in generale sono proprio queste: annotazioni. Annotano il codice sorgente e/o byte. Tutte le annotazioni (a meno che non siano usate esclusivamente per scopi di documentazione) dovrebbero essere gestite da qualche strumento. Nel caso delle annotazioni JCIP, FindBugs è uno strumento del genere. Se annoti alcune classi come immutabili e la classe non è immutabile, FindBugs genererà un avviso durante l'ispezione di questa classe. Le annotazioni JCIP hanno due scopi: documentano il design del codice e possono essere utilizzate da FindBugs e altri strumenti per verificare che il design previsto sia rispettato. –

1

Le annotazioni JCIP sono un modo formale per documentare un contratto di concorrenza come questo membro è "@GuardedBy" in questo campo.

Non fanno nulla funzionalmente nel codice.

4

L'IDE IntelliJ utilizzerà queste annotazioni per cercare errori nel codice. Se si annota una variabile è @GuardedBy (some_lock), l'IDE contrassegnerà i casi in cui si accede senza sincronizzarsi correttamente su di esso. Questo è molto utile.