gpt4 book ai didi

java - 为什么我必须转换为通用类型 T,即使我知道它会正确返回?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:01 24 4
gpt4 key购买 nike

我的代码:

private static <T> T get(Class<T> clazz) throws IllegalAccessException, InstantiationException {
if (clazz.equals(String.class)) {
return (T) new String("abc");//line x
} else {
return clazz.newInstance();
}

}

如您所见,在 line x 中,T 必须是 String.class 并返回 String。但是编译失败,没有将结果转换为 T

line x 更改为 return new String("abc"); 结果 Incompatible types

最佳答案

编译器不考虑 if 语句。

所以它看到的只是你需要返回一个T(它没有进一步的知识)。此处并没有推断T一定是String

您可以通过执行以下操作来避免收到“未经检查的转换为删除类型”的警告

return clazz.cast("abc");

关于java - 为什么我必须转换为通用类型 T,即使我知道它会正确返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33276749/

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