Home
Sign Up
Sign In
yumeko's recent timeline updates
yumeko
V2EX member #205138, joined on 2016-12-09 11:56:41 +08:00
yumeko
提问
技术话题
好玩
工作信息
交易信息
城市相关
yumeko's recent replies
Aug 2, 2020
Replied to a topic by
szzhiyang
›
程序员
›
如何在其他编程语言中用上 Go 的 defer 语句?
如何在其他编程语言中用上 Go 的 if err != nil....
Sep 11, 2019
Replied to a topic by
amiwrong123
›
程序员
›
Java 泛型擦除与补偿的迷惑
Java 的类型检查包括静态的和动态的检查。
静态检查由 Java 编译器进行。动态检查由 Java 虚拟机进行。
动态检查可以防止错误的 type cast 造成程序产生 undefined behavior。
当然动态检查的结果是,错误的 type cast 会让程序产生 Error 而退出执行。
范型虽然会擦除类型,但是如果代码里没有 type cast,那么执行就是安全的。
T 是一个类型参数,你不能用一个类型参数来产生类型实例。
类型参数只是给编译器确定代码里一个范型类的具体类型是什么。
所以范型类内部无法使用 T 来确定需要构造什么类型。
但是 Java Byte Code 在具体的范型类实现上又会保存类型信息,并且可以通过反射 API 获取。
例如说 static List<String> getList() {...} 的函数签名返回类型是 java.util.List<java.lang.Object>,
但是范型信息会保存 java.util.List<java.lang.String>。
这样可以使用反射来对某一个范型类型的特化类型生成一个具有特化参数实例的安全的范型实例。
»
More replies by yumeko
About
·
Help
·
Advertise
·
Blog
·
API
·
FAQ
·
Solana
·
982 Online
Highest 6679
·
Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 412ms ·
UTC 19:25
·
PVG 03:25
·
LAX 12:25
·
JFK 15:25
♥ Do have faith in what you're doing.
❯