Что плохого в использовании примитивного массива в качестве фактического параметра типа в Java 5?

Я пытаюсь скомпилировать код, подобный приведенному ниже, с использованием JDK1.5.0_u22. Я получаю две ошибки компиляции (см. Ниже). Он отлично работает с JDK1.6.0u30, но мой проект ограничен Java 5. Он также отлично работает, если я заменяю 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>
10
задан mravn 9 January 2012 в 15:38
поделиться