JAVA中泛型和Object的区别

重点:泛型的主要目的之一就是用来指定容器,而由编译器来保证类型的正确性。

此处以别处的demo为例,具体出处于(https://www.cnblogs.com/xujanus/p/8474553.html):

问题:下面2个方法的声明有何不同

public Object doSomething(Object obj) {....}

public <T> T doSomething(T t) {....}

答案:

单从上文2个方法声明来说-没有区别。无论是T还是 obj,你都只能调用Object类型的参数和返回值。

但是基于上面2个方法,如果你有一个使用了泛型的类:

MyClass<Foo> my = new MyClass<Foo>();
Foo foo = new Foo();

就可以这么写:

Foo newFoo = my.doSomething(foo);

但是如果是使用object的话,就得这么写

Foo newFoo = (Foo) my.doSomething(foo);

由此可见,使用泛型,有2个好处:

1.不需要做强制类型转换

扫描二维码关注公众号,回复: 2375104 查看本文章

2.编译时更安全。如果使用Object类的话,你没法保证返回的类型一定是Foo,也许是其它类型。这时你就会在运行时得到一个类型转换异常(ClassCastException)

 



猜你喜欢

转载自blog.csdn.net/qq_33537014/article/details/80575033