Ho finalmente provato a liberarmi di tutti quei nuovi avvisi del compilatore che Java 7 ha gentilmente generato. Ho lasciato questi due che non riesco a capire. C'è un modo per sbarazzarsi di loro senza sopprimerli?Alcuni avvisi di Java 7: come rimuoverli
Costruire un array di oggetti genericamente tipizzati (dove posso mettere una nella creazione array?):
static final int N = 10;
//warning: [unchecked] unchecked conversion
static final Set<Widget>[] queued = new ConcurrentSkipListSet[N];
//required: Set<Widget>[]
//found: ConcurrentSkipListSet[]
varargs generici (sembra accadere quasi ovunque accetto varargs di un tipo generico):
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: ho già:
// 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 !! Risolto entrambi i miei problemi in un colpo solo. Non capisco come 'newArray (N)' in realtà passi una matrice del tipo corretto a 'newArray', ma ti sbrighi il capo. BTW - L'ho regolato su 'static finale ConcurrentSkipListSet [] queued = DoubleBufferedList. > newArray (N);' per i miei test. –
OldCurmudgeon
perché non semplicemente 'statico finale ConcurrentSkipListSet [] queued = DoubleBufferedList.newArray (N);' –
ZhongYu
Perché quando ho rintracciato in quella forma mi ha dato un 'Object []' nel 2 ° parametro. Con il mio ho ottenuto un 'ConcurrentSkipListSet []' che mi sembra migliore. Mi rendo conto che è una differenza molto secondaria perché fondamentalmente sono entrambi "Oggetto []". – OldCurmudgeon