2015-07-24 10 views
5

Sto costruendo alcuni strumenti di analisi statica per aiutare a gestire l'architettura di un grande progetto. Per questo sto facendo un paio di regex per analizzare le informazioni dai file Java. Una di queste regex viene utilizzata per cercare un'annotazione @WebService (...).C'è mai un motivo per avere parentesi all'interno di un'annotazione @Webservice (.....) in Java EE?

Mi chiedevo se c'è una situazione possibile in cui ci sono parentesi in un'annotazione @WebService (con l'assegnazione di quelle all'inizio e alla fine e qualsiasi in letterali o commenti String). cui valgono le regole di

@WebService(serviceName="bla()" /* bla() */); 

sono ok; mentre quelli in

@WebService(... (...) ...); 

no.

Il secondo si verifica?

+0

No, non si verifica. –

risposta

1

Sì, può esserci una parentesi anche al di fuori dei valori letterali stringa.

In generale, le annotazioni possono avere espressioni costanti come argomenti, che valutano in primitive, String, Class, Enum, Annotation o Array. I valori letterali delle stringhe, i parametri di annotazione e le espressioni possono contenere parentesi. La seguente dichiarazione è valida:

@WebService(serviceName="bla()" + ("bla") + (2 * 3)); 

L'annotazione potrebbe anche contenere commenti che contengono parentesi:

@WebService(serviceName="bla()" /* () */); 

@WebService(// () 
    serviceName="bla()"); 
+0

La tua risposta è tecnicamente corretta. Mi sto solo chiedendo quando il primo esempio si verificherà mai :-) – Kristof

+0

@ Kristof Probabilmente mai :) Non riesco a pensare a nessuna buona ragione per cui qualcuno dovrebbe aggiungere una parentesi lì, tranne forse per il calcolo dei valori numerici. – Kapep