Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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.util.Queue Queue=new java.util.LinkedList();_Java_Data Structures_Queue_Linked List - Fatal编程技术网

Java:创建对象时,为什么不';界面在右手边吗? java.util.Queue Queue=new java.util.LinkedList();

Java:创建对象时,为什么不';界面在右手边吗? java.util.Queue Queue=new java.util.LinkedList();,java,data-structures,queue,linked-list,Java,Data Structures,Queue,Linked List,LinkedList实现了队列。Queue不应该在上述语句的右侧,LinkedList不应该在左侧吗?在Java中,您可以为相同类型或更一般类型的变量赋值。在您的示例中,newlinkedlist()是一个值。由于LinkedList实现了Queue,因此它比Queue更具体。i、 e.链接列表是一个队列 例如,这三个都是有效的 java.util.Queue<TreeNode> queue = new java.util.LinkedList<TreeNode>();

LinkedList实现了队列。Queue不应该在上述语句的右侧,LinkedList不应该在左侧吗?

在Java中,您可以为相同类型或更一般类型的变量赋值。在您的示例中,
newlinkedlist()
是一个值。由于
LinkedList
实现了
Queue
,因此它比
Queue
更具体。i、 e.
链接列表
是一个
队列

例如,这三个都是有效的

java.util.Queue<TreeNode> queue = new java.util.LinkedList<TreeNode>();
objecto=newlinkedlist();
Queue Queue=new LinkedList();
LinkedList=新建LinkedList();
但是你不能写这些,因为它们是不正确的赋值

Object o = new LinkedList<TreeNode>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
LinkedList o=newobject();
LinkedList队列=新队列();

另外,该示例中的第二个也是无效的,因为队列是一个接口,并且您不能实例化(
new
)一个接口,因为它不是一个具体的类型。在Java中,您可以为同一类型或更一般的类型的变量赋值。在您的示例中,
newlinkedlist()
是一个值。由于
LinkedList
实现了
Queue
,因此它比
Queue
更具体。i、 e.
链接列表
是一个
队列

例如,这三个都是有效的

java.util.Queue<TreeNode> queue = new java.util.LinkedList<TreeNode>();
objecto=newlinkedlist();
Queue Queue=new LinkedList();
LinkedList=新建LinkedList();
但是你不能写这些,因为它们是不正确的赋值

Object o = new LinkedList<TreeNode>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
LinkedList<TreeNode> list = new LinkedList<TreeNode>();
LinkedList o=newobject();
LinkedList队列=新队列();

另外,该示例中的第二个也是无效的,因为队列是一个接口,并且您不能实例化(
new
)接口,因为它不是一个具体类型。该示例声明
Queue
是对具有
Queue
类型的对象的引用,但是变量必须引用该接口的具体实现的实例,
LinkedList
。到,您同意只使用
队列
的方法。这允许您在需要时更改实现,而无需更改
queue
的使用方式

该示例将
队列
声明为对类型为
队列
的对象的引用,但该变量必须引用该接口的具体实现的实例,
链接列表
。到,您同意只使用
队列
的方法。这允许您在需要时更改实现,而无需更改
queue
的使用方式

否,
队列
是一个接口
LinkedList
是一个实现。为什么?您认为
newqueue()
是什么意思?
Queue
是一种允许将数据推送到一端并从另一端获取数据的数据结构。有很多方法可以实现显示这种行为的结构:
LinkedList
就是其中之一。@trashgood我是Java初学者。我知道队列是一个接口,LinkedList已经实现了它。实现接口的类创建对象,对吗?所以,这就是为什么我认为LinkedList应该在另一边我可能会看到你的困惑。当我说“inti”时,你可能会想,“我要求将I实现为int;那么队列怎么可能在左边呢。不过,情况并非如此。左边是您需要的类型/行为。你赋予它的是具体的东西。因此,在您的情况下,“队列”需要看起来像一个队列;您正在为它分配(或初始化)具体类型LinkedList。不,
Queue
是一个接口
LinkedList
是一个实现。为什么?您认为
newqueue()
是什么意思?
Queue
是一种允许将数据推送到一端并从另一端获取数据的数据结构。有很多方法可以实现显示这种行为的结构:
LinkedList
就是其中之一。@trashgood我是Java初学者。我知道队列是一个接口,LinkedList已经实现了它。实现接口的类创建对象,对吗?所以,这就是为什么我认为LinkedList应该在另一边我可能会看到你的困惑。当我说“inti”时,你可能会想,“我要求将I实现为int;那么队列怎么可能在左边呢。不过,情况并非如此。左边是您需要的类型/行为。你赋予它的是具体的东西。因此,在您的情况下,“队列”需要看起来像一个队列;您正在为它分配(或初始化)具体类型LinkedList。在您的第一行,您不是指更具体的类型,而不是更一般的类型吗?你可以将一个Dog对象(特定的)分配给一个动物变量(一般的),但不能反过来。在你的第一行,你不是指一个更具体的类型,而不是一个更一般的类型吗?可以将狗对象(特定)指定给动物变量(常规),但不能反过来。