:注釈を使用してパラメータ化された型を表すにはどうすればよいですか?私はそのようないくつかのメソッドを生成する注釈プロセッサを使用しようと
void result(Consumer<Type> name){
}
私は、パラメータを表現するために、アノテーションを使用して必要以上に。のみサポートコンパイル時定数
@Retention(RetentionPolicy.SOURCE)
public @interface Parameter {
String name();
Class<?> type();
}
しかし注釈メンバー、それは以下の不正Javaコードは、注釈によって表現することができない、例えば、パラメータ化された型に直接送達することは不可能であるので。
@Parameter(name ="ids",type = ArrayList<Integer>.class)
私は、一般的なパラメータが1つまたは複数と入れ子にすることができますので、そのようなArrayList <HashMap <String, String >>
など、種類を表す新しい注釈を宣言しようとしましたが、Javaは注釈が自身を参照サポートしていません、それは巡回注釈が発生します要素タイプがエラーです。次のアノテーションも違法です。
public @interface Type{
Class<?> type();
Type[] parameters() default {};
}
@Retention(RetentionPolicy.SOURCE)
public @interface Parameter {
String name();
Type type();
}
すべてのソリューションはありますか?
この注釈でモデル化しようとしていることは何ですか? –
@SotiriosDelimanolis私は、アノテーションプロセッサを使ってそのようないくつかのメソッドを生成しようとしています: 'void result(Consumer name)' –
DouO
そうです、そのユースケースについて詳しく説明してください。なぜそれが正確にこのように必要なのかはすぐには分かりません。 [XY問題とは何ですか?](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –