注釈を作成しました:
@Target(ElementType.FIELD )
@Retention( RetentionPolicy.RUNTIME )
public @interface Test
{
Class something();
}
しかし、Integer.TYPE
(intの戻り値の型の場合)で呼び出すと、エラーが表示されます。
public class TestA
{
@Test(Integer.TYPE)
public int id;
}
注釈を作成しました:
@Target(ElementType.FIELD )
@Retention( RetentionPolicy.RUNTIME )
public @interface Test
{
Class something();
}
しかし、Integer.TYPE
(intの戻り値の型の場合)で呼び出すと、エラーが表示されます。
public class TestA
{
@Test(Integer.TYPE)
public int id;
}
要素の型が要素の値と一致しない場合は、コンパイル時エラーになります。次のいずれかが true の場合にのみ、要素の型
T
は要素の値と一致します。V
[...]
T
であるか、 (§4.5)Class
の呼び出しである場合、はクラス リテラルです (§15.8.2)。Class
V
のソースコードからInteger
public static final Class<Integer> TYPE = (Class<Integer>) Class.getPrimitiveClass("int");
式Integer#TYPE
はクラス リテラルではありません。Integer.class
またはint.class
、それがあなたが求めているものであれば、うまくいくでしょう。