Problema de inicialización y declaración variable en java

El comportamiento está definido por la especificación Java Lanaguage # 15.1 sobre el operador de asignación. A saber (énfasis mío):

De lo contrario, se requieren tres pasos:

  • Primero, el operando de la izquierda se evalúa para producir una variable. Si esta evaluación se completa abruptamente, entonces la expresión de asignación se completa abruptamente por la misma razón; el operando de la derecha no se evalúa y no se produce ninguna asignación.
  • De lo contrario, se evalúa el operando de la derecha. Si esta evaluación se completa abruptamente, la expresión de asignación se completa abruptamente por la misma razón y no se produce ninguna asignación.
  • De lo contrario, el valor del operando de la derecha se convierte al tipo de la variable de la izquierda, se somete a la conversión del conjunto de valores (§5.1.13) al conjunto de valores estándar apropiado (no un conjunto de valores de exponente extendido), y el resultado de la conversión se almacena en la variable.

Entonces, la evaluación de la expresión str = str = "";es de derecha a izquierda, pero el operando de la izquierda String strse evalúa primero y crea la variable.

Respuesta 1

El compilador genera una advertencia para usted, lo Assignment to variable str has no effectque significa que el compilador simplemente lo reemplaza por

  String str = "";
Respuesta: 2

De acuerdo con el párrafo 6.3 de la especificación del lenguaje Java , está permitido usar una variable (local) dentro de su propio inicializador.

El alcance de una declaración de variable local en un bloque (§14.4) es el resto del bloque en el que aparece la declaración, comenzando con su propio inicializador e incluyendo cualquier otro declarante a la derecha en la declaración de declaración de variable local.

No está permitido leer una variable antes de que se inicialice, pero esa declaración no hace eso.

Respuesta: 3

Tengo problemas para comer la impresora de etiquetas Argox, pero todavía no puedo enviarle nada. El modelo es Argox OS214 tt, ANPP y acepta PPLB. Use una clase genérica para la conexión a dispositivos seriales, solía ...

Intento transferir el archivo con Mtom y funciona bastante bien hasta que uso SoapHandler para verificar la firma del cliente. SoapHandler mantiene todos los mensajes y los cambia a codificados en base64. Entonces cuando trato de ...

Estoy usando Camel 2.17 y me gustaría producir un archivo. Si el archivo ya existe, quiero mover el archivo existente en otra carpeta y agregar una marca de tiempo al archivo movido. Aquí está el código que uso: ...

Tengo las siguientes clases de Java: clase Modelo {// alguna clase de modelo} clase FooModel extiende el Modelo {} clase ModelWorker {public static <T extiende Modelo> void do (Clase <T> clazz) {/ * ... ...