为什么类型推断在这种特殊情况下不起作用?
public class ClassB<O> {
public <T> T echo(T msg) {
return msg;
}
public void doSomething(O a) {
}
public static void main() {
// Test 1
ClassB<Object> sampleB = new ClassB<>();
// No compile time type error.
// <T> and <O> are different.
String test = sampleB.echo("");
// Test 2
ClassB sampleB1 = new ClassB();
// Causes compile time type error.
String test2 = sampleB1.echo("");
}
}
方法返回类型 <T> 与 <O> 有什么关系?
编译器是否将其视为
String test2 = (Object) sampleB1.echo("");
代替
String test2 = (String) sampleB1.echo("");
桃花长相依
相关分类