0

注釈を作成しました:

@Target(ElementType.FIELD )
@Retention( RetentionPolicy.RUNTIME )
public @interface Test
{
    Class something();
}

しかし、Integer.TYPE(intの戻り値の型の場合)で呼び出すと、エラーが表示されます。

public class TestA
{
    @Test(Integer.TYPE)
    public int id;
}
4

2 に答える 2

1

Class価値に見合っていないInteger.TYPE

要素の型が要素の値と一致しない場合は、コンパイル時エラーになります。次のいずれかが true の場合にのみ、要素の型Tは要素の値と一致します。V

  • [...]

  • Tであるか、 (§4.5)Classの呼び出しである場合、はクラス リテラルです (§15.8.2)。ClassV

のソースコードからInteger

public static final Class<Integer>  TYPE = (Class<Integer>) Class.getPrimitiveClass("int");

Integer#TYPEはクラス リテラルではありません。Integer.classまたはint.class、それがあなたが求めているものであれば、うまくいくでしょう。

于 2016-04-12T03:43:51.837 に答える