0
我試圖使用註釋處理器生成這樣一些方法:如何使用註釋來表示參數化類型?
void result(Consumer<Type> name){
}
比我需要使用註釋來表示一個參數。
@Retention(RetentionPolicy.SOURCE)
public @interface Parameter {
String name();
Class<?> type();
}
但是註釋成員僅支持編譯時間常數,所以這是不可能直接遞送參數化類型,例如下面的非法的Java代碼不能被註解表示。
@Parameter(name ="ids",type = ArrayList<Integer>.class)
我試圖宣佈一個新的註釋來表示類型,這是因爲一般的參數可以是一個或多個並且嵌套,如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) –