日期:2014-05-20  浏览次数:20768 次

Object 为什么不能用T来代替?
import java.util.*;

public class Test
{
public static void main(String [] args)
{
List<Object> staff = new LinkedList<Object>();
staff.add("abc");
staff.add("efg");
staff.add("opq");

Iterator it = staff.iterator();
Object first = it.next();
Object second = it.next();
}
}

class A<T>
{
 private T name;
}


这个程序没什么意义,就是为了练习语法,为什么在类中可以用T来表示类型,在main中为什么不能用T来代替Object,两者不都是表示不限定类型吗?

------解决方案--------------------
在强类型语言java中T是指的泛型,泛型的意思就是一开始就知道了类型,想在使用的时候不需要做强制类型转换操作,然后又能同时避免类型安全等一系列问题的用法。

比如有个书包,我事先就知道书包里放的一定是书,那么我可以定义这样一个包的Bag类
class Bag<T>{
 public T getItem();
}

然后去声明一个书包对象
Bag<Book> bag = new Bag<Book>();
那么,当你使用bag.getItem()时,取到的就直接是Book对象。
------解决方案--------------------
Java的泛型是类型擦除的,既Java的泛型最后都变成了Object。