我想使用Eclipse的external null annotations來從java.util.Set
註釋JRE方法<T> T[] toArray(T[] a)
。所期望的效果應相當於此:如何在JRE方法中爲參數定義Eclipse外部空註釋
public interface Set<E> extends Collection<E> {
...
<T> T @NonNull[] toArray(T @NonNull[] a);
...
}
當使用Eclipse的註釋命令我可以註釋適當的方法的返回類型(I選擇的T[]
之後和之前[
光標位置)。然而,嘗試對參數做同樣的操作失敗。按Cmd-1只會發出嘟嘟聲,就像從上下文菜單中調用命令時選擇「Annotate」一樣。
我終於手動編輯了相應的Set.eea
文件來定義所需的註釋,照顧正確的eea file layout。即
class java/util/Set
toArray
<T:Ljava/lang/Object;>([TT;)[TT;
<T:Ljava/lang/Object;>([TT;)[1TT;
到
<T:Ljava/lang/Object;>([1TT;)[1TT;
這工作得很好,並標註正確編譯器處理:我改變了annotatedSignature。
因爲我可以註釋返回類型,但不是參數類型,我想知道我做錯了什麼。或者這是當前Eclipse版本的限制嗎?
我使用Eclipse Mars Release(4.5.0,Build ID:20150621-1200) 和jdk1.8.0_60。
有點offtopic:有沒有預編譯這些外部註釋的集合?還是你維護你自己的收藏? – HRJ
@HRJ我正在維護自己的外部註釋文件集合。不過,我打算讓他們成爲「開放源碼」,並很快發佈(通過GitHub)。完成後我會在這裏留下一張紙條。 –