我想知道以下两个方法声明之间有什么区别:
public Object doSomething(Object obj) {....} public <T> T doSomething(T t) {....}
有什么可以/可以做的,而不是另一种?我在本网站的其他地方找不到这个问题。
与上下文隔离-没有区别。在t和两者上,obj您只能调用的方法Object。
t
obj
Object
但是有上下文-如果您有泛型类:
MyClass<Foo> my = new MyClass<Foo>(); Foo foo = new Foo();
然后:
Foo newFoo = my.doSomething(foo);
与对象相同的代码
Foo newFoo = (Foo) my.doSomething(foo);
两个优点:
Foo
Bar
ClassCastException