ho scritto il seguente codice:Comprendere classi generiche interne
public class Test<T> {
public void method(){
B b = new B();
}
public class B{ }
}
//Some method in some class contains the following lines
Test<Integer> t = null;
Test.B b = t.new B(); //warning Test.B is a raw type
Perché ho ricevuto questo avviso? La declinazione del tipo interno B
non contiene il parametro type, quindi non è un tipo generico. Inoltre, the specification ci dà la seguente:
Una classe è generico se si dichiara una o più variabili di tipo
La classe B
non dichiarare le variabili di tipo. Allora, perché è un tipo generico?
Questa riga 'Test.B b = t.nuovo B();' compila? Qualcuno con più conoscenza di Java potrebbe spiegare cosa significa "t.new"? Questo mi sembra un errore di sintassi ai miei occhi. – thatidiotguy
@thatidiotguy Questo è un classico classificatore di istanze classe class expr. [Look] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.9) –
@ScottHunter 'Oggetto'. 'B' non eredita da nessuna classe, quindi eredita implicitamente da' Object'. – Turing85