Encontré un error extraño, que creo que es un error. Aquí es un caso mínimo, por favor no comentar sobre la utilidad del código :)javac extraña sintaxis - error inicio ilegal de la expresión
class Foo {
static public <X> int bar() { return 42; }
public int baz() {
return true ? 42 : (
Foo.<Void>bar() > 42 ? 41 : 43
)
;
}
}
Resultado:
err.java:7: illegal start of expression
Foo.<Void>bar() > 42 ? 41 : 43
^
He tratado SUN SDK javac 1.6.0_13 y 1.6.0_21.
El error desaparece, cuando sea
- maquillaje bar() no genérico (sólo para la curiosidad, no es realmente una opción)
- eliminar los paréntesis alrededor de la expresión ternaria en la línea 7
Parece que si e es una expresión, no siempre es válido escribir (e)?
Gracias Joachim. Eso es lo que temía (estoy atrapado con SDK estándar javac 1.6 en este momento). Tendrá que buscar la base de datos de errores en Sun/Oracle para averiguar si está solucionado. – Ingo
El error ya tiene unos 3 años, pero aparentemente no se solucionará en jdk 1.6. Sin embargo, se corrigió en jdk 1.7 beta 14 (la vista previa del desarrollador es b189, por lo que se corrigió allí).) – Ingo
@Ingo: ¿desea añadir un enlace al error que encontró? –