JAVA基础篇----泛型和Object的一些区别
- emmm,搬运来给自己学习用的,如有侵权立刻删除
-
问题:下面2个方法的声明有何不同
public Object doSomething(Object obj) {....} publicT doSomething(T t) {....} 答案:
单从上文2个方法声明来说-没有区别。无论是t 还是 obj,你都只能调用Object类型的参数和返回值。
但是基于上面2个方法,如果你有一个使用了泛型的类:
MyClass
my = new MyClass (); Foo foo = new Foo(); 就可以这么写:
Foo newFoo = my.doSomething(foo);
但是如果是使用object的话,就得这么写
Foo newFoo = (Foo) my.doSomething(foo);
由此可见,使用泛型,有2个好处:
1.不需要做强制类型转换
2.编译时更安全。如果使用Object类的话,你没法保证返回的类型一定是Foo,也许是其它类型。这时你就会在运行时得到一个类型转换异常(ClassCastException)