这是警告您,
E已经在作用域中使用了通用参数名称。更改的通用参数名称
Node将是解决警告的一种方法:
public class Stack<E> implements Iterable<E>{ private int N; private Node<E> first; private class Node<T> { private T item; private Node<T> next; }}但是由于E已经存在,所以您应该使用它;
Node由于已在通用类型中定义(
Stack<object>.Node并且
Stack<String>.Node是不同类型),因此已经通用:
public class Stack<E> implements Iterable<E>{ private int N; private Node first; private class Node { private E item; private Node next; }}请注意,这
Node是可行的,因为它不是静态的,因此它具有对外部
Stack<E>对象的引用,并且因此
E必须进行定义。如果
Node是静态的,则
Stack<E>除了有效地处于其词法范围之内之外,它与外部类型没有任何实际关系。



