注釈の「範囲」は、その位置に基づいています。例えば、この注釈は、クラス全体に影響を与えます。
@SuppressWarnings("unused")
public class Foo{
private Object anUnusedField;
private Object anotherUnusedField;
private void anUnusedMethod(Object unusedParameter){}
/*
* Here, the compiler will suppress all "the private field/method
* Foo.[insert name here] is unused" warnings. It will warn about
* the unusedParameter of anUnusedMethod
*/
}
この1つは、特定のフィールドに影響を与えます。
public class Foo{
private Object anUnusedField;
@SuppressWarnings("unused") private Object anotherUnusedField;
private void anUnusedMethod(Object unusedParameter){}
/*
* Here, the compiler won't tell that anotherUnusedField is not used.
* But it'll tell that anUnusedField isn't used, anUnusedMethod isn't
* called and unusedParameter isn't used in anUnusedMethod
*/
}
この1つは、特定の方法に影響を与えます。
public class DifferentFoo{
@SuppressWarnings("unused") private void anUnusedMethod(){}
private void anotherUnusedMethod(){}
/*
* Here, the compiler will only tell that anotherUnusedMethod isn't
* called
*/
}
はまた、あなたができることに注意してくださいすべてのアノテーションをすべて使用していません。たとえば、次の内容は無効です:
@Override protected Object someFieldFromTheSuperclass;
// Doesn't compile. Fields can't be overriden like methods
注釈は単なるメタデータです。彼らは自分では何もしません。何かが、 'Class'、' Method'、 'Field'といった何かを解析して、アノテーションデータを抽出し、それを使って何らかの目標を達成する必要があります。 Springでは、 '@ Autowired'は' AutowiredAnnotationBeanPostProcessor'によって処理されます。 –
注釈の付いたコードが実行されていません。それは他の無関係のコードで、あなたのオブジェクトをリフレクションを通して検査します。 – zapl
https://docs.oracle.com/javase/tutorial/java/annotations/ –