Это ошибка компилятора, которая затрагивает как Scala 2.8, так и 2.9, когда компилятор не вычисляет правильную стертую сигнатуру метода.Я не знаю об отчете об ошибке.
Компиляция метода:
object Test { def main(a: Array[String]) {
val a = new java.util.ArrayList[String]()
java.util.Collections.max(a)
}}
Результат в следующий байт-код:
public void main(java.lang.String[]);
Code:
Stack=2, Locals=3, Args_size=2
0: new #16; //class java/util/ArrayList
3: dup
4: invokespecial #18; //Method java/util/ArrayList."<init>":()V
7: astore_2
8: aload_2
9: invokestatic #24; //Method java/util/Collections.max:(Ljava/util/Collection;)Ljava/lang/Comparable;
12: pop
13: return
Обратите внимание, что байт-код со смещением 9вызывает статический метод с типом возврата Comparable
, тогда как фактический Collections.max
имеет Object
в качестве типа возврата:
$ javap -p java.util.Collections | grep max
public static java.lang.Object max(java.util.Collection);