Newsgroup: it.comp.java
Titolo: Info sulle annotazioni

Qualcuno mi spiega cosa sono le annotazioni e come si usano?
 
Non mi riferisco alle annotazioni standard Ovverride, Deprecaded e
SuppressWarnings, vorrei che qualcuno mi spiegasse come fare a creare
NUOVE annotazioni (con esempi di codice, ovviamente).
 
 


le annotazioni sono un modo per aggiungere metadati al codice, 
tipicamente configurazioni statiche. 
ne esistono sostanzialmente di due tipi, anzi tre ma a te interessa solo 
uno perché gli altri sono dominio del compilatore (a meno che non stai 
scrivendo un compilatore).
le annotazioni con retentionpolicy runtime sono visibili a runtime quindi 
al tuo stesso codice una volta eseguito. si usano in soldoni tramite 
reflection.
esempi se ne trovano a chili.
 

 esempi se ne trovano a chili.
 
Grazie rootkit per la spiegazione, ma la spiegazione NON mi sembra
completa, e' possibile vedere DEL CODICE della creazione di una NUOVA
annotazione e soprattutto la sua applicazione a un metodo o a una classe?
 
 

 
 
Vedi qui:
 
http://lmgtfy.com/?q=esempio+annotazione+java
 
 

 classe?
 
certo che è possibile. ti ho detto che gli esempi sono facilmente 
reperibili in rete e questa è la risposta. tanto per essere chiari 
significa intanto che non viaggio con gli esempi java in tasca, quindi se 
devo io andare a cercarli tanto vale tu ci vada da solo. no?
 
 

 
http://lmgtfy.com/?q=esempio+annotazione+java
 
 
Ho dato una occhiata alla guida di "HTML.it", che mi sembra abbastanza
buona, pero' NON riesco a PADRONEGGIARE il concetto di annotazione.
 
Ho capito come creare nuove annotazioni, quello che non capisco e' come
vanno USATE le annotazioni, qualcuno puo' farmi un semplice esempio di un
caso pratico in cui sono UTILI le annotazioni?
 
 


Se guardi nei sorgenti del jdk, ce ne sono in quantitï¿œ industriale, ad 
esempio(quella che avevo sottomano proprio adesso:
 
package org.springframework.jmx.export.annotation;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ManagedResource {
 
/**
  * The annotation value is equivalent to the <code>objectName</code>
  * attribute, for simple default usage.
  */
	String value() default "";
 
	String objectName() default "";
 
	String description() default "";
 
	int currencyTimeLimit() default -1;
 
	boolean log() default false;
 
	String logFile() default "";
 
	String persistPolicy() default "";
 
	int persistPeriod() default -1;
 
	String persistName() default "";
 
	String persistLocation() default "";
 
}
 
 
---
Questa e-mail ï¿œ priva di virus e malware perchï¿œ ï¿œ attiva la protezione avast! Antivirus.
http://www.avast.com
 
 

Non capisco.
Mettiamo che io crei questa annotazione:
 
public @interface AnnotazioneLibro
{
String autore() default "";
 
String titolo() default "";
 
String editore();
 
int annoDiPubblicazione() default 2000;
}
 
Come la applico a una classe o a un metodo?
 
 


Per "applicarla" devi approfondire un altro po' quello [1] che hai già
iniziato ad imparare per scrivere l'esempio che ci hai scritto, mentre
per "usarla" devi approfondire la reflection API [2].
 
[1] 
http://docs.oracle.com/javase/tutorial/java/annotations/
 
[2] 
http://docs.oracle.com/javase/tutorial/reflect/class/classModifiers.html
 
 
Ciao,
Tarin
 
--
Tarin Gamberini
JUG Padova
www.parancoe.org
 
www.lambico.org
 
www.jugevents.org
 


@AnnotazioneLibro(autore="E.Hemingway", titolo="Fiesta", 
editore="Mondadori")
public class Libro {
 
}
 
stessa cosa per un metodo, sempre che abbia senso. Ad esempio, 
l'annotazione che ho citato io serve per fornire delle descrizioni agli 
argomenti di un metodo esposto per il management, si usa cosi':
 
@ManagedOperation(description="Modifica una cosa")
@ManagedOperationParameters({
  @ManagedOperationParameter(name="nome", description="Nome della cosa"),
  @ManagedOperationParameter(name="valore", description="Valore della cosa")
})
public void cambiaUnaCosa(String nome, String valore) {
...
}
 
L'effetto sarï¿œ che nella management console, gli argomenti del metodo 
avranno un nome (ManagedOperationParameter name), invece del solo tipo, 
e una descrizione che verra' visualizzata nella descrizione estesa 
dell'operazione e anche tramite un tool-tip quando il mouse passa sopra 
al nome dell'argomento (ManagedOperationParameter description) o del 
metodo (ManagedOperation description).
Ovviamente chi usa il metodo dev'essere "aware" dell'annotazione e 
andarsela ad interpretare via reflection.
