桥接方法的静态转发器本身并未标记为桥接方法,并且无论出于何种原因,java 都更喜欢返回 GenTraversable 的那个,因为它有两个可供选择。
classOf[scala.collection.immutable.Stream[_]].getMethods filterNot
(_.isBridge) filter (_.getName == "empty") foreach println
public static scala.collection.immutable.Stream scala.collection.immutable.Stream.empty()
public static scala.collection.GenTraversable scala.collection.immutable.Stream.empty()
您不能在 java 语言中重载返回类型,因此任何人都可以猜测编译器在遇到它时会做什么。我不知道它是否被指定,尽管它可能是。
一般来说,您不能从 java 调用集合方法,这已被判断为不会修复。
编辑:重新“仍然不明白 2.11 中发生了什么变化来实现这一点”,这是第一批候选人:
% git log --no-merges --oneline --grep=forwarder v2.10.4..v2.11.2
532ef331eb (pull/3868/head) Restore reporter forwarders in CompilationUnit
b724201383 Rip out reporting indirection from CompilationUnit
98216be3f3 Move reporting logic into Reporting trait
653c404d7f (pull/3493/head) SI-3452 GenBCode version of the static-forwarder signature fix
640e279500 SI-3452 A better fix for static forwarder generic sigs
f8d80ea26a SI-3452 Correct Java generic signatures for mixins, static forwarders
51ec62a8c3 (pull/3480/head) SI-6948 Make the Abstract* classes public.
731ed385de SI-8134 SI-5954 Fix companions in package object under separate comp.
3cc99d7b4a (pull/3103/head) Collections library tidying and deprecation. Separate parts are listed below.
5d29697365 Flesh out the Delambdafy phase.
6e2cadb8bd (pull/2951/head) SI-7847 Static forwarders for case apply/unapply
9733f56c87 (pull/1173/head) Fixes SI-4996.
你不会通过查看库代码来找到它,这是肯定的。这是编译器的变化。