哪种 JVM 语言没有类型擦除?

Which JVM language doesn't have type erasure?

我正在寻找一种基于 JVM 的语言,它总是在运行时 "remember" 类型,除非:

  1. 编译器发现擦除不会中断执行或与工作流无关
  2. 用户手动声明要擦除的类型。

到目前为止,我只尝试过 scala,如果在源代码中声明,它只会禁用类型擦除,这不是我想要的,因为它需要大量的样板代码来实现,而当前的实现仍然存在很多问题(例如在Scala中,typetags是严格不变的,禁止在协变或逆变情况下使用)

这种语言存在吗?

锡兰有 fully reified generics。我自己没有尝试过,不知道实际效果如何。