Post

Visualizzazione dei post con l'etichetta Annotations

Come definire e utilizzare a runtime delle custom Annotation

DOMANDA: Come si definiscono delle Annotation custom per utilizzarle nel mio programma? RISPOSTA: Le Annotation introdotte in Java 5 consentono di definire dei metadata per tre diversi livelli di scoping : SOURCE - Annotation disponibile solo nello scope del sorgente e viene ignorato dal compilatore CLASS - Annotation disponibile nello scope dal compilatore in fase di compilazione, ma viene ignorata dalla Java Virtual Machine (JVM) RUNTIME - Annotation disponibile nello scope della JVM in modo che possa essere utilizzato da l'ambiente di runtime Le Annotation NON aggiungono logica all'applicazione e non sono uno strumento per programmare componenti. Sono invece in grado di fornire delle informazioni (metadati) per capire meglio il tipo di codice che stiamo eseguendo ed eventualmente intraprendere delle azioni o eseguire delle configurazioni ). In questo post ci concentreremo sulle Annotation di tipo RUNTIME per riuscire ad eseguire delle azioni durante l'esec

Annotations: @Override

DOMANDA: Perché si utilizza l'annotazione @Override? A cosa serve e quali sono i vantaggi? RISPOSTA: @Override è una annotazione aggiunta a partire da Java 5 ed utilizzata per indicare al compilatore che il metodo su cui è posta sta effettuando un override (sovrascrittura) di un metodo della sua superclasse o, da Java 6 , anche di un'interfaccia. La domanda nasce spontanea: "cosa cambia se non lo utilizzo?" . Proviamo a fare un override sul metodo equals() della superclasse Object : public class Animale{ private String nome; public boolean equals(Animale animale){ return nome.equals(animale.nome); } } Come si nota non abbiamo utilizzato @Override ... e infatti non stiamo effettuando un override , bensì un overloading ! Sicuramente la maggior parte di voi non avrà fatto caso all'errore. Il metodo equals() ereditato della classe Object accetta come parametro un Object (non un Animale ), di conseguenza il compilatore riconoscerà il m

Servlet 3.0: @WebServlet

DOMANDA: Come si configurano le Servlet 3.0 con l'Annotation @WebServlet? RISPOSTA: Le Servlet 3.0 possono essere configurate in modo tradizionale aggiungendo le seguenti righe al web.xml : <servlet>    <servlet-name> MiaServlet </servlet-name>    <servlet-class> it.blogspot.lancill.TestServlet </servlet-class>    <init-param>        <param-name> parametro1 </param-name>       <param-value> http://lancill.blogspot.it </param-value>     </init-param>  </servlet>  <servlet-mapping>     <servlet-name> MiaServlet </servlet-name>     <url-pattern> /servlet/* </url-pattern>  </servlet-mapping> Con questa configurazione la nostra Servlet , di nome MiaServlet , riceverà un parametro di inizializzazione ( parametro1 ) valorizzato con " http://lancill.blogspot.it " e risponderà a qualunque url che comincerà per " /servlet/" . Quindi se d