我有一个生成 jar 的 scala 项目。我正在尝试在 Java 项目中使用 jar。奇怪的是,方法签名在编译为 .class 文件时会丢失通用类型信息。
def foo(x:List[Long]) = ...
Lscala/collection/immutable/List<Ljava/lang/Object;>
在其 .class 文件中生成一个方法。
这是一样的
def foo(x:java.util.List[Long]) = ...
.class 文件说方法签名是
Ljava/util/List<Ljava/lang/Object;>
真正的问题是,当我在 Java 项目中使用这个 jar 时,我必须使用List<Object>
而不是List<Long>
像我想要的那样使用。当然我可以施放它,但我宁愿不用。有任何想法吗?
我正在使用 scala 版本 2.11.7