2012-02-14 5 views
6

Me gustaría utilizar una declaración de conmutación como en Java 1.7 que también permite switch(someString). Sin embargo, si cambio el compilador de Java a 1.7, el proyecto se rompe y tengo que volver a 1.5 o usar android tools-> fix project.Cambiar instrucción con cadena como argumento en Android

¿Hay alguna forma de usar el interruptor con cadenas en el desarrollo de Android?

+1

@Deepak Está en Java7, de ahí el motivo de esta pregunta. –

+0

La respuesta proporcionada en este enlace (http://stackoverflow.com/questions/338206/switch-statement-with-strings-in-java) le muestra cómo trabajar con el interruptor con restricción de cadenas antes de java 7. Si No quiero este enfoque, estás atascado con if/elses. – bsimic

+0

Posible duplicado de http://stackoverflow.com/questions/14367629/android-coding-with-switch-string/32225734#32225734 –

Respuesta

5

EDITAR

Personalmente, no he probado, pero de acuerdo a la página Android System Requirements, que no es compatible. Dicho esto, no significa que no funcione, solo que es poco probable que reciba mucha/cualquier ayuda sobre el tema de Google/Android.

JDK 5 o JDK 6 (JRE por sí sola no es suficiente)

En una nota potencialmente positivo, (que se encuentra con la ayuda de @Emil H y su comentario) He encontrado estos bits de información en línea:

de Dalvik on Wikipedia:

programas son comúnmente escritos en un dialecto de Java y compilado a código de bytes. Luego se convierten de archivos .class compatible con Java Virtual Machine para .dex compatible con Dalvik (Dalvik Ejecutable) archivos ...

Si el código de bytes no cambia de la versión 6 a 7 (excluyendo el agregado invokedynamic mencionado por @David Schwartz, que switch declaraciones no deberían estar usando.), entonces debería funcionar ...

+0

¿Estás seguro de esto? Pensé que el compilador dex funcionaba con el código de bytes. Y hasta donde sé que hay java 7 no agrega nada nuevo en el nivel de código de bytes ... Podría estar equivocado ... –

+1

@EmilH Java 7 agrega al menos 'invocadodinámico' al código de bytes de Java por [JSR292 ] (http://jcp.org/en/jsr/detail?id=292). –

+1

@David Scwartz Sí, pero Java no usa ese derecho? ¿Es principalmente para aumentar el soporte para lenguajes dinámicos en jvm como Jython, etc.? –

1

Debería poder usar JDK7 con android. Marque esta respuesta a una pregunta relacionada:

https://stackoverflow.com/a/7481063/355499

EDIT:

probé a nivel local y todo funciona bien con JDK7 (que es lo que yo uso en el desarrollo). Sin embargo, no puedo encontrar una manera de cambiar el nivel de cumplimiento de 1.6 a 1.7 en mi proyecto de Android. Si realmente quieres hacer esto, supongo que tendrías que recurrir a construir tu proyecto de otra forma que no sea usar Eclipse. Por ejemplo, usando un script ant o similar. Sin embargo, podría ser un poco más trabajo de lo que vale.

0

Por ahora no es posible: aunque en Java 1.7 compilador que se introdujo el interruptor comunicado con la cadena, por desgracia Android requiere la versión 1.6 o 1.5. Así que tenemos que esperar.

Cuestiones relacionadas