黑马程序员技术交流社区

标题: 泛型 [打印本页]

作者: 那日苏    时间: 2011-7-16 23:05
标题: 泛型
在Google泛型时,在某帖中看到:
Java 语言中的泛型基本上完全在编译器中实现,由编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码。这种实现技术称为 擦除(erasure)(编译器使用泛型类型信息保证类型安全,然后在生成字节码之前将其清除)。那么运行时如何区分 List<String>和 List<Integer>?
作者: 匿名    时间: 2011-7-17 01:25
在编译的时候就进行判断了,也就是说,编译出来的字节码文件其实是不同的,已经包含了类型方面的区别了。字节码文件都不同,运行时当然能区分出了阿,2个不同的文件嘛。
作者: 匿名    时间: 2011-7-17 10:07
你所运用的开发工具是一行一行编译的,也就是说当你完成List<String>时,和完成List<Integer>时,工具会一行行编译,不会考虑下面的代码,所以编译出来的文件也是不一样的,张老师说当你遇到不会的问题时候,就编一个简单的程序运行一下,就知道了。
作者: 匿名    时间: 2011-7-18 11:11
JAVA的泛型只在其编译的时候有用,在编译成class文件的时候就被擦除了。
JAVA源代码在编译之后会类型擦除。所以在运行的时候没有泛型这一说。
作者: 匿名    时间: 2011-7-18 11:14
行时应该不能区分 List<String>和 List<Integer>(运行时都是 List)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2