1
A
回答
3
这里有没有类型擦除这是不可能的例子:在当前JRE和List
喜欢的用途
public static void main(String[] args) {
List<String> newList = legacyMethod();
for (String s : newList) {
System.out.println(s);
}
}
public static List legacyMethod() {
List oldList = new ArrayList();
oldList.add("a");
oldList.add("b");
oldList.add("c");
return oldList;
}
3
有与旧代码的兼容性意味着它应该能够不用编译JVM上的新版本上运行。假设您有一些没有源代码的遗留库。这确保您可以在Java 5上运行它。您的新代码将能够毫无问题地调用遗留代码。
1
运行旧代码将使用新老代码。方法吸如Collections.sort
将是新回调的旧代码。
0
采取哪些还没有被移植到Java 5的任何旧的Java库,但。您会发现很多旧代码返回或接受的地方List
。如果不删除,你不能使用泛型的代码(让你的生活更简单),并通过您的列表作为参数传递给框架无(浅)复制了整个事情 - List
和List<String>
会为String
和File
不同。
以类似的方式,当库返回一个列表,你要么必须使用预5语法与迭代器来处理它或复制的基本清单到泛型一个。
有办法解决这个问题。 Sun可能已经使List
等于List<Object>
或者上帝保佑List<?>
。但那会引入更加微妙的问题。所以他们决定采取阻力最小的方式,并在编译过程中使用通用信息(主要是)。
相关问题
- 1. 泛型,擦除和字节代码
- 2. Java泛型和考虑下面的代码类型擦除
- 3. 泛型在Java中 - 与遗留代码的互操作
- 4. Java泛型类型擦除字节代码
- 5. 对于大型遗留代码库MSTest
- 6. 将java遗留代码转换为泛型 - 如何用类型替换Object?
- 7. JpaRepository的泛型没有类型擦除?
- 8. 测试遗留代码
- 9. PowerMockito测试遗留代码
- 10. 泛型问题 - 无法编译代码,可能是因为类型擦除
- 11. 将泛型引入遗留代码并遍历参数化实例
- 12. 泛型代码删除不工作
- 13. Rcpp升级遗留代码问题
- 14. 接受测试遗留代码
- 15. 将IoC容器引入遗留代码
- 16. 构建遗留Turbo C++代码
- 17. 了解遗留的grails代码?
- 18. 使用ActiveMerchant的PayPal API(遗留代码)
- 19. 棱镜是否使用遗留代码?
- 20. “遗留代码”的定义是什么?
- 21. 可以EntityFramework与遗留代码并存
- 22. Scala宏和类型擦除
- 23. 类型擦除和集合
- 24. 如何从遗留代码中删除共享变量
- 25. 去除遗留代码“设计时间锁”属性
- 26. 什么是Java泛型中的类型擦除?
- 27. 类型擦除 - 泛型 - 得到ClassCastException不在预期的地方
- 28. Java泛型名称冲突类型擦除
- 29. OSGi和遗留库
- 30. 支持遗留代码,无需访问编译后代码
这不是一个很好的例子,在旧的和新的方法相同。 – 2009-07-23 11:41:13