2015-09-14 44 views
2

我想使用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。

+0

有點offtopic:有沒有預編譯這些外部註釋的集合?還是你維護你自己的收藏? – HRJ

+1

@HRJ我正在維護自己的外部註釋文件集合。不過,我打算讓他們成爲「開放源碼」,並很快發佈(通過GitHub)。完成後我會在這裏留下一張紙條。 –

回答

2

這確實是一個bug,我剛剛提交了 https://bugs.eclipse.org/477461來跟蹤這個。

這是bug 464081這得到固定的4.6 M1(即,在當前的可用版本的Eclipse朝霓虹燈),目前提出了4.5.2(Mars.2)

相關問題