yumeko's recent timeline updates
yumeko

yumeko

V2EX member #205138, joined on 2016-12-09 11:56:41 +08:00
  •   The specified image does not exist
    yumeko's recent replies
    如何在其他编程语言中用上 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>。
    这样可以使用反射来对某一个范型类型的特化类型生成一个具有特化参数实例的安全的范型实例。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5298 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 17ms · UTC 08:07 · PVG 16:07 · LAX 01:07 · JFK 04:07
    ♥ Do have faith in what you're doing.