[英]Behaviour of Generic Type in Java
堆栈类
public class Stack
{
public void push(LinkedList ll) {
}
LinkedList类
class LinkedList<Item>
{
private class Node<Element>
{
private Element value ;
private Node<Element> next;
}
Node(Element value, Node<Element> ref) {
this.value = value;
this.next = ref;
}
}
我在Stack类中有我的主要方法,在其中我做了一个Stack类的对象和一个LinkedList类的对象,并且我在调用push方法。 我不明白的是,如果我使用(LinkedList<Type> ll)
作为参数编译器,则会显示错误:
cannot find symbol
public void push(LinkedList<Item> ll) {
^
symbol: class Item
location: class Stack
为什么会发生此错误,为什么我使用它也能正常工作
public void push(LinkedList ll)
提前致谢
在LinkedList
的声明中, Item
是类型参数的名称。 它仅在LinkedList
类本身内具有直接含义。
在声明push
方法并使用 LinkedList
,您将指定一个类型实参 ,即链表的元素类型。 例如,这很好:
public void push(LinkedList<String> ll)
...但是Item
不是有意义的标识符。
现在,作为替代,您也可以使您的Stack
类通用:
public class Stack<Item>
{
public void push(LinkedList<Item> ll) { ... }
}
...但是您应该知道, LinkedList
和Stack
声明都使用称为Item
的类型参数,这实际上是一个巧合。 完全等同于编写:
public class Stack<T>
{
public void push(LinkedList<T> ll) { ... }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.