java - Java泛型中将类型擦除为对象
问题描述
类型擦除可以解释为仅在编译时强制执行类型约束并在运行时丢弃元素类型信息的过程。
public static <E> boolean containsElement(E [] elements, E element){
for (E e : elements){
if(e.equals(element)){
return true;
}
}
return false;
}
编译器将未绑定的类型 E 替换为实际的 Object 类型:
public static boolean containsElement(Object [] elements, Object element){
for (Object e : elements){
if(e.equals(element)){
return true;
}
}
return false;
}
我担心的是,如果在编译时使用泛型类型成功验证了集合加载检查,那么在运行时转换generic specified type
为有什么意义呢?Object
因为避免类型问题的主要目的在编译时就已经解决了。
解决方案
推荐阅读
- ios - UIView 应该观察通知吗?
- python - 如何使用列表项创建不同的输出?
- python - TensorFlow 2.0.0 ValueError:没有为任何变量提供渐变:['Variable:0']
- python - Python 日志记录终止
- r - 基准实验中使用的学习器的特征重要性 - mlr
- c# - 如何添加自定义 EntityState 枚举
- sql-server - 使用 npm express 连接到本地 mssql 服务器进行反应
- python - 如何从多列中获取最大值
- azure - 从 Azure 流分析中的 EventHub 中删除重复项
- javascript - 如何写入文本文件Javascript?