我終於試圖擺脫Java 7友好生成的所有新的編譯器警告。我留下這兩個我無法理解。有沒有辦法擺脫它們而不壓制它們?一些Java 7的警告 - 如何刪除它們
構建一般類型對象的數組(我在哪裏可以把在創建陣列?):
static final int N = 10;
//warning: [unchecked] unchecked conversion
static final Set<Widget>[] queued = new ConcurrentSkipListSet[N];
//required: Set<Widget>[]
//found: ConcurrentSkipListSet[]
通用可變參數(好像幾乎無處不在我接受泛型類型的可變參數發生):
class Foo<T> {
//warning: [unchecked] Possible heap pollution from parameterized vararg type T
public void add(T... entries) {
//where T is a type-variable:
//T extends Object declared in class Foo
BTW:我已經有:
// Add many entries to the list.
public void add(List<T> entries) {
// ...
}
// Add a number of entries.
public void add(T... entries) {
// Make a list of them.
add(Arrays.<T>asList(entries));
}
哇!一舉解決了我的問題。我不明白'newArray(N)'實際上是如何將一個正確類型的數組傳遞給'newArray',而是向您傳達您的先生。順便說一句 - 我把它調整爲static final ConcurrentSkipListSet [] queued = DoubleBufferedList。> newArray(N);'爲我的測試。 –
OldCurmudgeon
2013-03-22 10:27:03
爲什麼不簡單'static final ConcurrentSkipListSet [] queued = DoubleBufferedList.newArray(N);' –
ZhongYu
2013-03-22 11:13:03
因爲當我追蹤到它的形式給了我一個Object []'在第二個參數。我有一個'ConcurrentSkipListSet []',對我來說感覺更好。我意識到這是一個非常小的差異,因爲它們基本上都是Object []'。 – OldCurmudgeon 2013-03-22 11:43:39