为什么
List[scala.Int]
类型会被擦除成List[Object]
,而List[java.lang.Integer]
中的Integer
似乎被保留了呢?例如,javap
为...object Foo {
def fooInt: List[scala.Int] = ???
def fooInteger: List[java.lang.Integer] = ???
}
输出
public scala.collection.immutable.List<java.lang.Object> fooInt();
public scala.collection.immutable.List<java.lang.Integer> fooInteger();
我们可以看到在第二种情况下,Integer
被保留了。文档 说明
将泛型类型中的所有类型参数替换为它们的边界或
Object
(如果类型参数未限定)。
这可能是由于“边界”条款引起的吗?如果是这样,那么这个边界是在哪里指定的呢?
javap
输出贴在这里吗?请使用-c -v -p
。 - Eugene