2015-08-05 21 views
16

Wiem, co to znaczy w komentarzu do celów dokumentacyjnych, ale poza tym, co to znaczy? (Normalnie po prostu google to, ale każdy symbol non-letter pojawia się w wynikach)w języku Java co oznacza symbol @?

+0

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

+0

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

+0

możliwy duplikat [Jak uzyskać fajny adres URL "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

Odpowiedz

14

Symbol @ oznacza Java opisów. To, co robi adnotacja Java, polega na dodaniu specjalnego atrybutu do zmiennej, metody, klasy, interfejsu lub innych elementów językowych. (Można to skonfigurować, gdy zadeklarujesz adnotację) Kiedy dodasz adnotację do czegoś, inne części programu mogą sprawdzić, czy coś ma adnotację, czy nie. Następnie może wykorzystać te informacje, aby zrobić wszystko, czego potrzebują.

Podam kilka przykładów:

@Override adnotacja:

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

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

I kiedy to zrobić:

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

będzie wykonać someMethod w SuperClass, prawda? Nie. Wypisze "Klasa pochodna!". Dzieje się tak dlatego, że w klasie pochodnej istnieje ta sprawa. Tak więc pochodna klasa przesłania super klasy someMethod.

@SuppressWarnings Adnotacja:

Oto metoda:

public void someMethod() { 
    int i; 
} 

Nie będzie ostrzeżenie kompilatora mówiąc, że i nigdy nie jest używany. Więc można dodać @SuppressWarnings metody do sankcjonowania ostrzeżenie:

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

pamiętać, że nie jest parametrem do @SuppressWarnings adnotacji. Niektóre adnotacje mają parametry i możesz je wyszukać w javadoc. Ale dla tych, którzy nie mają parametrów, nie musisz dodawać () jak metody.

Możesz również zadeklarować własne adnotacje i użyć odbicia, aby je sprawdzić. Powyższe 2 adnotacje zostaną sprawdzone przez kompilator.

+16

'@ Zastępowanie' NIE jest konieczne do przesłonięcia metody, jak w twoim przykładzie; ten przykład działałby nawet po usunięciu '@ Override'. "@ Override" istnieje, aby wskazać czytelnikowi, że metoda została nadpisana, a także zapewnić, że metoda zostanie nadpisana. Na przykład, jeśli zrobiłeś literówkę w nazwie metody podklasy, twoja metoda nie byłaby przesłonięciem metody superklasy (z powodu jej innej nazwy). Zwykle byłoby to w porządku, ale jeśli dodałeś adnotację do '@ Override', pojawiłby się błąd kompilatora informujący cię, że oczekuje on nadpisanej metody. – Alexander

2

Symbol @ jest używany do annotations. Z mojego doświadczenia wynika, że ​​najczęstszą adnotacją jest @Override, co oznacza, że ​​metoda jest zadeklarowana w nadklasie. Inne typowe adnotacje to @Deprecated, co oznacza, że ​​nie należy już stosować metody, ale nadal istnieje zgodność wsteczna i @SupressWarnings, aby zapobiec wyświetlaniu ostrzeżeń w kompilatorze.

Należy pamiętać, że w rzeczywistości można uzyskać adnotacje, które nie są zawarte w podstawowych bibliotekach Java i zadeklarować własne adnotacje.

5

Znak @ służy do określania adnotacji Java.

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

Tam są wbudowane w Java Adnotacja i zdefiniowane przez użytkownika niestandardowego adnotacji.

adnotacje są stosowane na różne sposoby, na przykład ostrzeżenie tłumić stowarzyszonego metodą URI (do serwletów), zmienne stowarzyszonej do zasobów (JNDI) itp

0

Jak niektórzy sugerują, jest to adnotacja Javy. Pomaga to kompilatorowi sprawdzić poprawność kodu i powiadomić programistę.

Bardzo prosty przykład kodu:

public class SomeClass { 

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

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

Adnotacja z SomeClass#toString który jest @Override pomaga kompilatora, aby określić, że jest to przesłonięte funkcja z niejawnego spadku do klasy Object.

Podczas gdy adnotacja z SomeClass#doSomeOperation ostrzega programistę, że sama funkcja jest już przestarzała i należy jej unikać.

-2

Adnotacje dotyczą czytnika lub kompilatora, a nie kodu wykonywalnego.