2013-12-10 33 views
1

我定義了一個註釋。是否有可用的java註釋重載?

@Documented 
@Target(value = ElementType.PARAMETER) 
@Retention(RetentionPolicy.RUNTIME) 
public @interface ApiParameter { 
public String name() default ""; 

public String type() default ""; 

public String desc() default ""; 
} 

我可以在方法參數聲明中使用上面的註釋。

... 
@ApiParameter(desc="for desc") String userName, 
@ApiParameter(name="for name", desc="for desc") String address, 
@ApiParameter(name="for name",type="for type",desc="for desc") Order order 
... 

我怎樣才能像上面一樣使用?我想避免輸入字段名稱。

... 
@ApiParameter("for desc") String userName, 
@ApiParameter("for name", "for desc") String address, 
@ApiParameter("for name","for type" "for desc") Order order, 
... 

plz幫助〜

+1

http://stackoverflow.com/questions/3632659/java-annotation-overloading –

回答

1

只有單元素註釋[JLS-9.7.3]被允許使用

@Identifier (ElementValue) 

速記爲@Identifier(value = ElementValue)

僅當註釋類型具有value元素且所有其他元素(如果有)具有默認值時,纔可以使用單元素註釋。

如果您絕對必須避免在註釋中使用字段名稱,則可以使用單個String[] value()元素創建註釋。

public @interface ApiParameter { 
    public String[] value(); 
} 

,然後用它作爲

@ApiParameter({"for name", "for desc"}) String param 

不過,我認爲這個解決方案會比您目前不太清楚,更容易出錯,你也必須檢查數組有正確的通過註釋訪問元素時的元素數量。

+0

非常感謝。 + _ + B – cmk1105

相關問題