2010-02-19 15 views
68

Estoy escribiendo un pequeño código en J2ME. Tengo una clase con un método setTableId(Short tableId). Ahora, cuando intento escribir setTableId(100), se produce un error de tiempo de compilación. ¿Cómo puedo establecer el valor corto sin declarar otra variable corta?Configuración Valor corto Java

Al configurar Long valor Puedo usar setLongValue(100L) y funciona. Entonces, ¿qué significa L aquí y cuál es el carácter del valor Short?

Gracias

+0

'L' es simplemente un sufijo utilizado para indicar un literal 'largo'. – missingfaktor

Respuesta

106

En Java, los literales enteros son de tipo int a menos que tengan el sufijo 'L' o 'l' (se prefiere mayúscula L ya que minúscula L es difícil de distinguir del número 1) . Si tiene el sufijo L, los literales son de tipo largo.

El sufijo no tiene ningún nombre especial en la Especificación del lenguaje Java. Tampoco hay sufijos para ningún otro tipo entero. Así que si usted necesita a corto o byte literal, deben ser fundido:

byte foo = (byte)0; 
short bar = (short)0; 

En setLongValue (100L) que no tiene que incluir necesariamente L sufijo porque en este caso el literal int se ensancha de forma automática a tiempo. Esto se denomina conversión primitiva de ampliación en la especificación de lenguaje de Java.

+12

También hay sufijos para otros tipos: 'd' /' D' hace 'double' y' f'/'F' hace un float! –

+4

Además: los literales que se ajustan al tamaño no necesitan ser expulsados: tus dos ejemplos funcionan sin el elenco también. –

+0

Tienes razón en ambos. Debería haber sido más claro que estoy hablando de literales enteros aquí, no de literales de coma flotante. – Lauri

7

Puede utilizar setTableId((short)100). Creo que esto se modificó en Java 5 de modo que se asume automáticamente que los literales numéricos asignados a byte o short y dentro del rango para el target son el tipo de destino. Sin embargo, las últimas JVM de J2ME derivan de Java 4.

+0

PD: Bienvenido al atascado en el dolor de la edad media al codificar J2ME. No puedo esperar a que los dispositivos de mano alcancen los escritorios del año 2000. –

+3

No hay "J4" (ni "J5". No haga que el esquema de creación de versiones/nombres de Java sea más confuso de lo que ya es. –

+1

@Joachim: Java 1, Java 2, Java 5, Java 6 y Java 7 son bien conocidos y están tan referidos, no es demasiado difícil extrapolar lo que significan Java 3 y Java 4. "Jn" es simplemente una abreviación de lo obvio. Adoptar la nomenclatura actual de Sun (y con suerte final) para todas las versiones reduce confusión. –

23

No existe el byte ni el literal corto. Necesita convertir a corto usando (short)100

Cuestiones relacionadas