2017-08-10 7 views
2

は、私は以下のようにカスタムアノテーションを持ってコレクション

class MyClass { 

    @CustomAnnotation(description="Some Description", type=MyClass.class) 
    public void someMethod() { 
    } 
} 

しかし、私はリストを指定する機能が欲しいですMyClassの「タイプ」として、以下のようになります。

class MyClass { 

    @CustomAnnotation(description="Some Description", type=List<MyClass>.class) 
    public void someMethod() { 
    } 
} 

私は見ることはできません。私ができることは、アノテーションに別の属性を追加して、型がコレクションであるかどうかを指定しますが、他にも優れた選択肢がありますか?私はそこにはないと信じていますが、希望があれば尋ねます。

答えて

0

Rentention.RUNTIMEを見て、私はあなたがこの

List.classに反映し、List<MyClass>.class、実行時に同じものを参照したいと仮定します。

はこのことを忘れないでください:

ジェネリック医薬品は、実行時には存在しません。

は実行時に、すべての一般的なタイプはを消去入力されるので、私はあなたがここでやろうとしているものは何でも可能ではないかもしれないことを疑っています。注釈に別の属性を追加することでこの問題を解決できるかもしれませんが、注釈で何をしようとしているのかわからなくても、私は完全にはわかりません。反射を使用してMyClassList<MyClass>.classにすることができます。しかし、私に教えてください、それは不可能です。

私のアドバイスは、List.classを使用することです。実行時には、リストに格納されているオブジェクトのタイプは実際には関係ありません。

+0

[Type Erasure](http://docs.oracle.com/javase/tutorial/java/generics/erasure.html)を編集したり、「ジェネリックは実行時に存在しません。そういうわけではありません。 – Maaaatt

関連する問題