如果我们比较 的 javap 输出,我们得到 2.11.4 的 javap 输出:scala.collection.immutable.Set
public interface scala.collection.immutable.Set<A>
extends
scala.collection.immutable.Iterable<A>,
scala.collection.Set<A>,
scala.collection.generic.GenericSetTemplate<A,
scala.collection.immutable.Set>,
scala.collection.SetLike<A, scala.collection.immutable.Set<A>>,
scala.collection.Parallelizable<A,
scala.collection.parallel.immutable.ParSet<A>> {
public abstract scala.collection.generic.GenericCompanion<scala.collection.immutable.Set> companion();
public abstract <B> scala.collection.immutable.Set<B> toSet();
public abstract scala.collection.immutable.Set<A> seq();
public abstract scala.collection.parallel.Combiner<A, scala.collection.parallel.immutable.ParSet<A>> parCombiner();
}
对于 2.11.5:
public interface scala.collection.immutable.Set<A>
extends
scala.collection.immutable.Iterable<A>,
scala.collection.Set<A> {
public abstract scala.collection.generic.GenericCompanion<scala.collection.immutable.Set> companion();
public abstract <B> scala.collection.immutable.Set<B> toSet();
public abstract scala.collection.immutable.Set<A> seq();
public abstract scala.collection.parallel.Combiner<A, scala.collection.parallel.immutable.ParSet<A>> parCombiner();
}
版本 2.11.4 不正确,它违反了 Java 虚拟机规范,第 4.7.9.1 节:
类签名对有关(可能是泛型的)类声明的类型信息进行编码。它描述类的任何类型参数,并列出其(可能参数化的)直接超类和直接超接口(如果有)。类型参数由其名称描述,后跟任何类绑定和接口边界。
这在此 scalac 问题中得到了明确的解释,这些问题已在...2.11.5