繁体   English   中英

Java中通用类型的行为

[英]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) { ... }    
}

...但是您应该知道, LinkedListStack声明都使用称为Item的类型参数,这实际上是一个巧合。 完全等同于编写:

public class Stack<T>
{
    public void push(LinkedList<T> ll) { ... }    
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM