Java可以实现reified generics吗?

软件工程师、主攻高级编程语言虚拟机的设计与实现

58 👍 / 2 💬

问题描述


java10里这个项目提到有可能有reified generics,JVM平台上这是可以实现的?

先放传送门:

首先题主关注的是“在JVM上Java是否可以实现C#风格的reified generics”,其次是

Project Valhalla

是否会带有reified generics功能。

上面的第一个传送门里我已经简单讨论了一下在当前的JVM上实现C#(包括其C#风格reified generics)的思路。毫无疑问,实现是可以实现的,而且已经有人实际在JVM上实现过了带有泛型的C#;但不是通过JVM的直接支持,而是通过“模拟”(emulate)的方式实现,所以性能不会很优化,而且跟Java原有的API的兼容性也不好(需要reify的地方要多加参数或者多加字段)。

然后第二个传送门里放了些传送门,讲解了C#风格reified generics和Java风格擦除式generics的异同,并带了一点Project Valhalla的介绍。我写那个回答的时候Valhalla才到了第三版原型,并且各种文档介绍还主要停留在第一版原型上,跟现在相比有许多不同了。

简单说:

这个用Java实现的字节码解释器在这里:

valhalla/valhalla/jdk: 62c3b03ef4ed /interpreter/src/valhalla/interpreter/

有兴趣的同学可以钻进去看看 ^_^