Hat Java Shadow Type Parameter? Ich finde es schwierig, mich selbst zu testen, da Java-Generika zur Laufzeit nicht verdinglicht werden.Typdeklaration basierend auf Typparametern in inneren Klassen
Zum Beispiel gegeben dieser Code:
public class NestedGeneric<T> {
private InnerGeneric<T> innerGenericInstance;
private static class InnerGeneric<T> {
public T innerGenericField;
}
NestedGeneric() {
innerGenericInstance = new InnerGeneric<T>();
}
}
Sowohl die folgenden Aussagen zusammenstellen fein:
NestedGeneric<Integer> test1 = new NestedGeneric<Integer>();
NestedGeneric.InnerGeneric<String> test2 = new NestedGeneric.InnerGeneric<String>();
Wenn die NestedGeneric
einen Parametertyp übergeben wird und dessen Konstruktor aufgerufen, was ist T
? Ist es immer der gleiche Typ wie der Typparameter, der an übergeben wird?
Mit anderen Worten, kann eine äußere Klassen Typ Parameter an eine innere Klassen generische Typ Deklarationen übergeben werden?
Ja kann es, aber nicht zwingend. Sie könnten die innere Klasse auch zu einem anderen Objekt machen, aber Sie möchten das T in der geschachtelten Klassenerstellung in ein 'U' ändern. –
Typparameter scheinen beschattet http://ideone.com/8DihKQ – ReyCharles