我有以下代码,
class Foo<K> {
public <T> T createK() {
return null;
}
public void foo() throws ClassNotFoundException {
K k = (1==1)?null:createK();
}
}
但是,它没有编译。它在使用条件运算符的行上导致以下编译错误(Oracle Java 7):
类型不匹配:无法从 Object 转换为 K
foo()
当我如下重写方法时,
public void foo() throws ClassNotFoundException {
K k = null;
if (1==1)
k = null;
else
k = createK();
}
然后它编译得很好。这是如何引起的,我该如何解决?