voy a dar la respuesta a la primera de error del compilador y seguir investigando para ver si puedo encontrar el uno para el error segunda compilador ...
la ejecución regular de por sí no produce errores utilizando jdk1 .5.0_22:
System.out.println(Arrays.asList(new float[1]).size());
la ejecución de este por sí mismo ...
System.out.println(Arrays.asList(new float[1], new float[3]).size());
produce este error del compilador desagradable ...
An exception has occurred in the compiler (1.5.0_22). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.AssertionError: unexpected type: <nulltype>
at com.sun.tools.javac.tree.TreeMaker.Type(TreeMaker.java:531)
at com.sun.tools.javac.tree.TreeMaker.Type(TreeMaker.java:525)
at com.sun.tools.javac.comp.Lower.boxArgs(Lower.java:2510)
at com.sun.tools.javac.comp.Lower.visitApply(Lower.java:2420)
at com.sun.tools.javac.tree.Tree$Apply.accept(Tree.java:813)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.comp.Lower.visitSelect(Lower.java:3019)
at com.sun.tools.javac.tree.Tree$Select.accept(Tree.java:987)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.comp.Lower.visitApply(Lower.java:2474)
at com.sun.tools.javac.tree.Tree$Apply.accept(Tree.java:813)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1893)
at com.sun.tools.javac.comp.Lower.boxArgs(Lower.java:2517)
at com.sun.tools.javac.comp.Lower.visitApply(Lower.java:2420)
at com.sun.tools.javac.tree.Tree$Apply.accept(Tree.java:813)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.tree.TreeTranslator.visitExec(TreeTranslator.java:227)
at com.sun.tools.javac.tree.Tree$Exec.accept(Tree.java:728)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.tree.TreeTranslator.translate(TreeTranslator.java:54)
at com.sun.tools.javac.tree.TreeTranslator.visitBlock(TreeTranslator.java:145)
at com.sun.tools.javac.comp.Lower.visitBlock(Lower.java:2933)
at com.sun.tools.javac.tree.Tree$Block.accept(Tree.java:535)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.tree.TreeTranslator.visitMethodDef(TreeTranslator.java:129)
at com.sun.tools.javac.comp.Lower.visitMethodDefInternal(Lower.java:2267)
at com.sun.tools.javac.comp.Lower.visitMethodDef(Lower.java:2186)
at com.sun.tools.javac.tree.Tree$MethodDef.accept(Tree.java:478)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.comp.Lower.visitClassDef(Lower.java:1989)
at com.sun.tools.javac.tree.Tree$ClassDef.accept(Tree.java:434)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1881)
at com.sun.tools.javac.comp.Lower.translate(Lower.java:1901)
at com.sun.tools.javac.comp.Lower.translateTopLevelClass(Lower.java:3070)
at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:487)
at com.sun.tools.javac.main.Main.compile(Main.java:592)
Así que seguí el consejo de los compiladores e hice algunas búsquedas en la base de datos de errores de Oracle y encontré el error al buscar "java.lang.AssertionError: unexpected type:". Puede verificarlo aquí: Primitive arrays and varargs inference leads to crash in TreeMaker.Type(TreeMaker.java:531)
El uso de la clase de envoltura de flotador es la solución definitiva que descubrió.
EDITAR - respuesta para el error segunda compilador
creo que el error segunda compilador de un error y me he sometido a la Bug Database
yo era capaz de compilar la lista siguiente, clave y el comparador espontánea sin errores de compilación:
List<float[]> list=new ArrayList<float[]>();
list.add(new float[] {0.0f});
list.add(new float[] {1.0f});
float[] key = new float[2];
Comparator<float[]> c = new Comparator<float[]>() {
public int compare(float[] f1, float[] f2) {
return f1.length - f2.length;
}
};
Cuando trato de ejecutar "Collections.binarySearch (lista, llave, c)" con ellos, me sale el error "no puede encontrar símbolo". Si cambio "float" a "Float", compila bien en ambos casos.
creo que la lista, la llave y el comparador he publicado anteriormente cumple el contrato de búsqueda binaria completamente de acuerdo con el Java 5 spec on it
http://stackoverflow.com/questions/788433/can-you-pass-an-int-array-to-a-generic-method-in-java Esto podría darle alguna idea –
He copiado su código como está y podría compilarlo y ejecutarlo sin errores en jdk1.5.0_22. – r3nj1
Extraño. ¿Usaste el javac provisto por Oracle? Usando eclipse, funciona para mí. – mravn