java – 为什么我必须转换为Generic Type T,即使我知道它返回正确?
发布时间:2020-05-24 23:10:04 所属栏目:Java 来源:互联网
导读:我的代码: private static T T get(ClassT clazz) throws IllegalAccessException, InstantiationException { if (clazz.equals(String.class)) { return (T) new String(abc);//line x
|
我的代码: 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"); (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – 在GUI中处理未处理的异常
- Android 发送短信程序
- java – 使用Collections.frequency()打印某些值
- java – 强制Spring RestTemplate使用XmlConverter
- Android Http相关辅助类 HttpUtils
- java – 方法getResourceAsStream在ubuntu上返回null
- 为什么java.net.SocksSocketImpl是Java中的默认java.net.So
- Android 平台创建 XY 图表的完整例子
- java – SWT DateTime格式更改
- HttpClient实现调用外部项目接口工具类的示例
