Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java找不到符号-无法从其他类访问方法。可能的Java泛型或继承误解_Java_Generics_Inheritance_Types_Parameters - Fatal编程技术网

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>;