Object 为啥不能用T来代替
Object 为什么不能用T来代替?import java.util.*public class Test{public static void main(String [] a
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。