Я пытаюсь скомпилировать код, например, используя JDK1.5.0_u22. Я получаю две ошибки компиляции (ниже). Он отлично работает с JDK1.6.0u30, но мой проект ограничен Java 5. Он также отлично работает, если я repleace float с классом-оболочкой Float. Кто-нибудь знает, что здесь происходит? Простая ошибка или какое-то общее ограничение на использование примитивных типов массивов в общих ситуациях?
import java.util.*;
public class A {
public static void main(String[] args) {
List<float[]> list = Arrays.asList(new float[1], new float[3]);
float[] key = new float[2];
int index = Collections.binarySearch(list, key, new Comparator<float[]>() {
public int compare(float[] f1, float[] f2) {
return f1.length - f2.length;
}
});
System.out.println(index);
}
}
Ошибки компиляции:
C:\Users\mravn\Desktop>"c:\Program Files\Java\jdk1.5.0_22"\bin\javac A.java
A.java:4: incompatible types
found : java.util.List<<nulltype>[]>
required: java.util.List<float[]>
List<float[]> list = Arrays.asList(new float[1], new float[3]);
^
A.java:6: cannot find symbol
symbol : method binarySearch(java.util.List<float[]>,float[],<anonymous java.util.Comparator<float[]>>)
location: class java.util.Collections
int index = Collections.binarySearch(list, key, new Comparator<float[]>() {
^
2 errors
C:\Users\mravn\Desktop>