转载:http://blog.csdn.net/yinbodotcc/article/details/1494412
package com.yinbodotcc;
/*
* 一个泛型类的内部类可以访问到它的外围类的类型参数
*/
/*
public class MyList<E> {
private Node head = null;
private class Node
{
E value;
Node next;
Node(E value)
{
this.value = value;
this.next = head;
head = this;
}
}
public void add(E e)
{
new Node(e);
}
public void dump() {
for (Node n = head; n != null; n = n.next)
System.out.println(n.value + " ");
}
public static void main(String[] args) {
MyList<String> list = new MyList<String>();
list.add("world");
list.add("Hello");
list.dump();
}
}
*/
/*
*
* 静态嵌套类不能访问它的外围类的类型参数
*
* 那位作者提示:
* 总之,泛型类的内部类可以访问到其外围类的类型参数,这可能会使得程序模糊
难懂。本谜题所阐述的误解对于初学泛型的程序员来说是普遍存在的。在一个泛
型类中设置一个内部类并不是必错的,但是很少用到这种情况,而且你应该考虑
重构你的代码来避免这种情况。当你在一个泛型类中嵌套另一个泛型类时,最好
为它们的类型参数设置不同的名字,即使那个嵌套类是静态的也应如此
*/
public class MyList<E> {
private Node<E> head = null;
private static class Node<T> {
T value; Node<T> next;
Node(T value, Node<T> next) {
this.value = value;
this.next = next;
}
}
public void add(E e) {
head = new Node<E>(e, head);
}
public void dump() {
for (Node<E> n = head; n != null; n = n.next)
System.out.print(n.value + " ");
}
public static void main(String[] args) {
MyList<String> list = new MyList<String>();
list.add("world");
list.add("Hello");
list.dump();
}
}