java返回值object_在JAVA中返回类型使用泛型T和Object有什么区别?

本文探讨了Java中泛型方法声明中使用`T`与`Object`的差异。虽然在方法签名上两者看似无异,但在实际应用中,泛型提供了类型安全和免于强制类型转换的优势。当应用于泛型类时,如`MyClass<T>`,`public T doSomething(T t)`允许直接赋值给相同类型的变量,避免了运行时的ClassCastException。因此,使用泛型可以提升代码的可读性和安全性。
摘要由CSDN通过智能技术生成

最近在读jackson源码的时候发现有段代码返回类型写的是 T,而我自己一般写的是Object。上网搜了下这个语法糖,在stackoverflow上找到一个比较简单易懂的解释,搬运过来(https://stackoverflow.com/questions/5207115/java-generics-t-vs-object)

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

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

public T 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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值