下面的代码在“返回列表”中引发异常;与typemismatch。它本来以为没有。

public class Teste {

    public <S extends TestPai> S getList(){
        TestPai list = new TesteFilho();
        return  list;
    }
}

class TesteFilho implements TestPai{

}

interface TestPai{

}


我找到了解决方案,像这样

public class Teste {
@SuppressWarnings("unchecked")
    public <S extends TestPai> S getList(){
        TestPai list = new TesteFilho();
        return  (S)list;
    }
}

class TesteFilho implements TestPai{

}

interface TestPai{

}


但这听起来很奇怪,因为我还有其他代码在执行之前就已经编译过了。
-我在以jre1.7.0_51作为执行环境的Windows机器中使用eclipse IDE。

有人可以帮助使其按预期运行(在第一个代码中)。

提前致谢。

最佳答案

所有类型都是固定的!您根本没有使用type参数。所以最简单的方法就是

public TestPai getList(){
    TestPai list = new TesteFilho();
    return  list;
}

10-04 12:09