java - Scala 是否有可能在不更改 JVM 的情况下实现泛型?

标签 java generics scala jvm

我最近开始学习 Scala,很失望(但并不惊讶)他们的泛型也是通过类型删除实现的。

我的问题是,Scala 是否有可能具有具体化的泛型,或者 JVM 是否需要以某种方式进行更改?如果JVM确实需要改变,究竟需要改变什么?

最佳答案

否 - 如果该字节码不支持具体化的泛型,Scala 就不可能作为与 Java 等效的字节码运行。

当你问“需要改变什么?”,答案是:字节码规范。目前,字节码不允许定义变量的参数化类型。已决定作为对字节码的修改以支持具体化的泛型将 break backwards compatibility , 那 generics would have to be implemented via type erasure .

为了解决这个问题,Scala 利用其 implicit 机制的强大功能定义了一个 Manifest,它可以在任何在运行时发现类型信息的范围。 list 是实验性的,大部分没有记录,但它们 are coming as part of the library in 2.8 .这是 Scala reified generics / Manifests 上的另一个好资源

关于java - Scala 是否有可能在不更改 JVM 的情况下实现泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1357906/

相关文章:

swift - 调用函数时无法推断通用参数 'T'

Scala - 减少/向左折叠

c# - C#(或C++)与JAVA之间如何通信

用于 TLS/SSL 密码套件强化的 Java 正则表达式

c# - 为什么我必须显式提供泛型参数类型而编译器应该推断类型?

java - Scala(或Java)中泛型函数的特化

scala - Neo4j 中的多线程节点创建

scala - 使用 Scala 的 REPL 进行性能基准比较是否合理?

java - 如何在 Java Swing 中禁用一个按钮而不是全部按钮?

java - 混淆器 - 错误 : A JNI error has occured