Java アノテーションの定数値
Java では、アノテーション パラメータとして使用される定数の配列を格納するインターフェイスを定義するのが一般的です。たとえば、次のようなインターフェイスがあるとします。
public interface FieldValues { String[] FIELD1 = new String[]{"value1", "value2"}; }
クラスに注釈を付ける場合、次のようにこれらの定数をパラメータ値として使用することがあります。
@SomeAnnotation(locations = {"value1", "value2"}) public class MyClass { .... }
ただし、このアプローチでは、すべての注釈インスタンスで文字列値を指定する必要があります。定数を直接使用する方が便利です:
@SomeAnnotation(locations = FieldValues.FIELD1) public class MyClass { .... }
残念ながら、Java では配列または定数をアノテーション パラメーター値として使用することはできません。これは、アノテーションがコンパイル時に解決され、コンパイル時の定数として使用できるのはプリミティブ値または文字列だけであるためです。
したがって、Java で目的の動作を実現する直接的な方法はありません。 FieldValues の配列は、アクセスできるコードによって実行時に要素が変更される可能性があるため、真の定数ではありません。真の不変性を確保するには、不変クラスを使用して文字列値をラップすることを検討できます。
以上がJava アノテーションは配列または定数をパラメータ値として使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。