gpt4 book ai didi

返回Generic Class类型时Java编译错误

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:33 25 4
gpt4 key购买 nike

public interface Parent{
}

public class Child implements Parent{
}

public <T extends Parent> Class<T> getClass(){
return Child.class; // compile error, add cast to Class<T>
}

我希望上面的代码没有错误,但是当我返回 Child.class 时出现编译错误。

最佳答案

您不能告诉 Java 总是返回 Child.class 而不管 T。可能有其他类从不是 Child 的父类扩展而来。此外,由于您没有在任何地方使用 T,因此您的代码没有多大意义。两种可能的解决方案:

public Class<? extends Parent> getAClass() {
return Child.class;
}

或者也许

public <T extends Parent> Class<T> getAClass(Class<T> clazz){
return clazz;
}

第二个示例可以编译,但如果在类级别声明 T 可能会更有意义。

此外,我重命名了您的方法以避免与现有的 getClass() 方法发生名称冲突。

关于返回Generic Class类型时Java编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35079831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com