Java找不到符号-无法从其他类访问方法。可能的Java泛型或继承误解
所以我正在完成一个家庭作业程序,这个程序给了我一个类,它使用类型参数来构建链表数据结构。该类有一个内部类,用于构建节点。这里是它的简化版本Java找不到符号-无法从其他类访问方法。可能的Java泛型或继承误解,java,generics,inheritance,types,parameters,Java,Generics,Inheritance,Types,Parameters,所以我正在完成一个家庭作业程序,这个程序给了我一个类,它使用类型参数来构建链表数据结构。该类有一个内部类,用于构建节点。这里是它的简化版本 public class LinkedList<T> { private static class Node<T> { public T data; //node next,prev variables + constructor } //methods to add, get,
public class LinkedList<T> {
private static class Node<T> {
public T data;
//node next,prev variables + constructor
}
//methods to add, get, remove, etc nodes on the list
}
还有一个游戏类
public class gamePiece{
int gamePieceName;
public gamePiece(int name){
gamePieceName = name;
}
//view game piece name
public int viewPieceName(){
return gamePieceName;
}
}
因此,gameBoard具有游戏片段,它们存储在链表数据结构中。我将每个单独的游戏片存储在一个节点中,每个节点连接到下一个和上一个的其他游戏片,形成棋盘。我可以将游戏件插入板中LinkedList类的实例和节点中,但当我访问该节点和其中的游戏件时,我无法从游戏件类调用与该游戏件关联的方法
然而,当通过JGrasp直接与gamePiece类交互时,我可以创建一个新的gamePiece实例,并使用它的方法进行操作。然而,如果我把这个游戏扔到链表中的一个节点上,我仍然希望能够访问这个游戏的方法
不幸的是,我遇到了以下错误:
error: cannot find symbol
return gameBoard.linkedList.getFirstNode().viewPieceName();
^
symbol: method viewPieceName()
location: class Object
为了澄清该错误消息,getFirstNode是LinkedList类中的一个方法,它获取列表中的第一个节点并返回gamePiece对象,而不是整个节点,并且在gamePiece类中找到viewPieceName。我可以通过使用JGrasp的交互功能调用viewPieceName,直接创建一个gamePiece对象并处理其方法。但是,我似乎无法通过LinkedList访问这些方法。您的语法很混乱,因为您有两个同名的不同泛型 使用非静态内部类:
public class LinkedList<T> {
private class Node { // <== Either non-static
public T data; // and direct T usage
//node next,prev variables + constructor
}
//methods to add, get, remove, etc nodes on the list
}
或不同的通用名称:
public class LinkedList<T> {
private static class Node<E> { // <== or different generic name
public E data;
//node next,prev variables + constructor
}
//methods to add, get, remove, etc nodes on the list
}
那么你的申报应该是:
LinkedList<gamePiece> gameBoard;
再往下
gameBoard = new LinkedLiest<gamePiece>;
这是告诉泛型类型其实际基类型的方式。应该包括相关类/方法的代码。否则,很难帮助您。@Eran添加了更多相关类/方法的代码。谢谢。请向我们展示链表引用变量的声明以及其中的赋值。@realponsust我在gameBoard类中添加了代码,在该类中声明了一个新的LinkedList,等等。您确定代码可以编译吗?LinkedList变量名为board,但您正在分配给名为gameBoard的变量,该变量也是类的名称。
gameBoard = new LinkedLiest<gamePiece>;