inkompatible Typen-Objekt kann nicht konvertiert werden zu t, wobei t eine Typ-variable
Ich bin immer der Inkompatible Typen: Objekt kann nicht konvertiert werden zu T, wobei T eine Typ-variable: T extends Object declared in class Stack.
Können Sie bitte helfen, ich weiß nicht, warum es so ist, Methode pop() und getData() den gleichen Typ T...
Hier der verkürzte code.
public class Stack<T> {
Node head;
public T pop() {
return head.getData(); //the error is on this line
}
private class Node <T> {
private final T data;
private Node next;
private Node(T data, Node next) {
this.data=data;
this.next=next;
}
private T getData() {
return data;
}
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Muss es
Node<T> head
. Sie vergessen haben, fügen Sie den parameter "Typ".Haben Sie erklärt, eine innere Klasse
Node
definiert seinen eigenen Typ-parameterT
(es ist anders alsStack
'sT
). Sie sind jedoch mit einem raw -Node
wenn Sie erklärenhead
. Type-erasure gilt und die BerufunggetData()
auf eine raw -Node
gibt einObject
.Entfernen Sie den type-parameter
T
aufNode
. Denn es ist nichtstatic
, dieStack
's KlasseT
type-parameter in dem Bereich fürNode
.Node
einfachStack
'sT
type-parameter.