Java泛型T与对象
我想知道以下两个方法声明之间有什么区别:
public Object doSomething(Object obj) {....}public <T> T doSomething(T t) {....}
有什么可以/可以做的,而不是另一种?我在本网站的其他地方找不到这个问题。
回答:
与上下文隔离-没有区别。在t
和两者上,obj
您只能调用的方法Object
。
但是有上下文-如果您有泛型类:
MyClass<Foo> my = new MyClass<Foo>();Foo foo = new Foo();
然后:
Foo newFoo = my.doSomething(foo);
与对象相同的代码
Foo newFoo = (Foo) my.doSomething(foo);
两个优点:
- 无需强制转换(编译器向您隐藏了此内容)
- 编译有效的时间安全性。如果使用的是
Object
版本,则不能确保方法始终返回Foo
。如果返回,则在运行时Bar
会有一个ClassCastException
。
以上是 Java泛型T与对象 的全部内容, 来源链接: utcz.com/qa/430188.html