class A<E>{
}
class B<E> extends A{
}
public class WildInDeclare<E>{
public static void main(String[] args){
A<Integer> obj = new B<Integer>();
}
}
Wenn ich das obige Programm kompiliere, habe ich diesen Fehler erhalten.Vererbung mit Generics in Java
Note: WildInDeclare.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
Danach habe ich einfach ersetzen class B<E> extends A{
-class B<E> extends A<E>{
es funktioniert gut können Sie erklären, warum es erforderlich, wieder A<E>
mit Codebeispiel Während Vererbung schreiben Bitte.
Das zweite Problem mit der Vererbung Ich konfrontiert. Ich aktualisiere den obigen Code mit dem folgenden Code.
class A<E>{
public A(E o){
}
}
class B<E> extends A{
public B(){
super(E);
}
}
public class WildInDeclare<E>{
public static void main(String[] args){
A<Integer> obj = new B<Integer>();
}
}
Aber es ist nicht kompilieren warum? Ich habe den folgenden Fehler erhalten.
WildInDeclare.java:8: error: cannot find symbol
super(E);
^
symbol: variable E
location: class B<E>
where E is a type-variable:
E extends Object declared in class B
Note: WildInDeclare.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
Wie kann ich Parameter zur Elternklasse übergeben?
Welche Compiler-Fehlermeldung erhalten Sie? –
, weil Sie von 'A' erben, das ein Generikum in seiner Klassensignatur hat. Wenn Sie es auslassen, wird 'A' als Rawtype geerbt (wie sollte der Compiler automatisch für Sie entscheiden, dass das generische' E' für die Klasse 'B' auch als generisch für' A' verwendet werden soll)? – SomeJavaGuy
@ OleV.V. Frage aktualisiert –