加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 为什么我必须转换为Generic Type T,即使我知道它返回正

发布时间:2020-12-15 03:08:57 所属栏目:Java 来源:网络整理
导读:我的代码: private static T T get(ClassT clazz) throws IllegalAccessException,InstantiationException { if (clazz.equals(String.class)) { return (T) new String("abc");//line x } else { return clazz.newInstance(); } } 如您所见,在第x行中,T必
我的代码:
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();
        }

    }

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

更改第x行以返回新的字符串(“abc”);结果不兼容的类型.

解决方法

编译器不考虑if语句.

所以它看到的只是你需要返回一个T(它没有进一步的知识).它没有推断出T必须是String.

您可以通过执行操作避免出现“未经检查的强制转换为已擦除类型”的警告

return clazz.cast("abc");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读