W końcu udało mi się pozbyć wszystkich nowych ostrzeżeń kompilatora wygenerowanych przez program Java 7. Zostałem z tymi dwoma, których nie mogę pojąć. Czy istnieje sposób na pozbycie się ich bez ich tłumienia?Niektóre ostrzeżenia w języku Java 7 - jak je usunąć
Konstruowanie tablicą rodzajowo wpisywanych obiektów (gdzie mogę umieścić w tworzeniu tablicy?):
static final int N = 10;
//warning: [unchecked] unchecked conversion
static final Set<Widget>[] queued = new ConcurrentSkipListSet[N];
//required: Set<Widget>[]
//found: ConcurrentSkipListSet[]
Generic varargs (wydaje się zdarzyć wszędzie Akceptuję varargs o typ rodzajowy):
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: mam już:
// 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));
}
Wow !! Rozwiązałem oba problemy za jednym razem. Nie rozumiem, w jaki sposób 'newArray (N)' faktycznie przekazuje tablicę odpowiedniego typu do 'newArray', ale czapki z głów dla ciebie proszę. BTW - dostosowałem go do "statycznego końcowego ConcurrentSkipListSet [] queued = DoubleBufferedList. > newArray (N);' dla moich testów. –
OldCurmudgeon
dlaczego nie po prostu "statyczny końcowy ConcurrentSkipListSet [] queued = DoubleBufferedList.newArray (N);' –
ZhongYu
Ponieważ kiedy to wyrysowałem, ta forma dała mi 'Object []' w drugim parametrze. Z moim dostałem "ConcurrentSkipListSet []", który jest dla mnie lepszy. Zdaję sobie sprawę, że jest to bardzo niewielka różnica, ponieważ obie są po prostu "Object []". – OldCurmudgeon