2015-08-05 20 views
16

So cosa significa in un commento a scopo di documentazione, ma al di fuori di ciò che cosa significa? (Normalmente farei solo google ma ogni simbolo non compare nei risultati)in java cosa significa il simbolo @?

+0

http://stackoverflow.com/questions/24221/java-annotations – fdsa

+0

http://stackoverflow.com/questions/19551022/the-symbol-in-java – edtheprogrammerguy

+0

possibile duplicato di [Come ottenere un URL piacevole come "http://stackoverflow.com/questions/1074/asp-mvc"](http://stackoverflow.com/questions/1227348/how-to-get-a-nice-url-like-http-stackoverflow-com -questions-1074-asp-mvc) – fdsa

risposta

14

Il simbolo @ indica un'annotazione Java. Che cosa fa un'annotazione Java, è che aggiunge un attributo speciale alla variabile, al metodo, alla classe, all'interfaccia o ad altri elementi del linguaggio. (Questo può essere configurato quando si dichiara l'annotazione) Quando si aggiunge un'annotazione a qualcosa, altre parti del programma possono verificare se qualcosa ha un'annotazione o meno. Quindi può utilizzare queste informazioni per fare tutto ciò di cui hanno bisogno.

Permettetemi di darvi alcuni esempi:

Il @Override annotazione:

public class SuperClass { 
    public void someMethod() { 
     System.out.println ("Superclass!"); 
    } 
} 

public class DerivedClass extends SuperClass { 
    @Override 
    public void someMethod() { 
     System.out.println ("Derived class!"); 
    } 
} 

E quando si esegue questa operazione:

SuperClass sc = new DerivedClass(); 
sc.someMethod(); 

eseguirà il someMethod in SuperClass, giusto? No. Stamperà "Classe derivata!". Questo perché nella classe derivata, c'è questo thingy @Override. Quindi la classe derivata ha la priorità su della classe super someMethod.

Il @SuppressWarnings della nota:

Ecco un metodo:

public void someMethod() { 
    int i; 
} 

Ci sarà un avviso del compilatore dicendo che i viene mai utilizzato. Quindi è possibile aggiungere il @SuppressWarnings al metodo per sopprimere l'avvertimento:

@SuppressWarnings ("unused") 
public void someMethod() { 
    int i; 
} 

Si noti che non v'è un parametro per la @SuppressWarnings annotazione. Alcune annotazioni hanno parametri e puoi cercarle in javadoc. Ma per quelli che non hanno parametri non è necessario aggiungere () come metodo.

È inoltre possibile dichiarare le proprie annotazioni e utilizzare il riflesso per controllarle. Le precedenti 2 annotazioni saranno verificate dal compilatore.

+16

'@ Override' NON è necessario per sovrascrivere un metodo come nell'esempio; quell'esempio funzionerebbe anche con '@ Override' rimosso. '@ Override' esiste per indicare a un lettore che un metodo è stato sovrascritto e anche per garantire che il metodo sia sovrascritto. Ad esempio, se hai fatto un refuso nel nome del metodo della sottoclasse, il tuo metodo non sarebbe un override del metodo della super-classe (a causa del suo nome diverso). Di solito questo andrebbe bene, ma se lo hai annotato con '@ Override', si presenterebbe un errore del compilatore, che ti diceva che prevedeva un metodo sovrascritto. – Alexander

2

Il simbolo @ viene utilizzato per annotations. Nella mia esperienza, l'annotazione più comune è @Override, che indica che un metodo è dichiarato in una superclasse. Altre annotazioni comuni sono @Deprecated, a indicare che un metodo non deve più essere utilizzato ma esiste ancora per la compatibilità con le versioni precedenti e @SupressWarnings per impedire la visualizzazione di avvisi nel compilatore.

Nota che è possibile ottenere annotazioni che non sono incluse nelle librerie Java principali e dichiarare le proprie annotazioni.

5

Il segno @ viene utilizzato per specificare l'annotazione Java.

https://en.wikipedia.org/wiki/Java_annotation

Ci sono built-in annotazione e utente definiti su misura annotazione.

annotazioni sono utilizzati in vari modi, ad esempio avvertimento sopprimere, il metodo associato a URI (Servlet), le variabili associate alla risorsa (JNDI) ecc

0

Come altri suggerisce, è l'annotazione di Java. Aiuta il compilatore a convalidare il tuo codice e a notificare anche il programmatore.

Molto semplice esempio di codice:

public class SomeClass { 

    @Override 
    public String toString() { 
     return "SomeClass"; 
    } 

    @Deprecated 
    public void doSomeOperation() { 
     // some operation... 
    } 
} 

L'annotazione da SomeClass#toString che è @Override aiuta il compilatore per determinare che è una funzione override dall'eredità implicito alla classe Object.

Mentre l'annotazione da SomeClass#doSomeOperation avverte il programmatore che la funzione stessa è già deprecata e deve essere evitata per l'uso.

-2

Le annotazioni sono per il lettore o il compilatore, non il codice eseguibile.

Problemi correlati