Estoy tratando de asignar el resultado de la siguiente instanceof pattern matching switch a la variable languageCodeOfReturnValue .
String languageCodeOfReturnValue = switch (object){ case PlantGuidePageWrapperDTO plantGuidePageWrapperDTO -> plantGuidePageWrapperDTO.getSeedDetailsDTO().getPageSummaryLanguageCode(); case JournalEntryDetailsDTO journalEntryDetailsDTO -> journalEntryDetailsDTO.getLanguageCode(); case JournalOverviewDTO journalOverviewDTO -> journalOverviewDTO.getPageSummaryLanguageCode(); default -> null; };Pero este código provoca la siguiente advertencia:
El valor 'cambiar (objeto){ case PlantGuidePageWrapperDTO plantGuidePageWrapperDTO -> plant...' es siempre 'null'
Cuando elimino la cláusula default , la advertencia desaparece, pero luego me queda un error de sintaxis porque el switch no cubre todos los valores posibles. La advertencia desaparece cuando reemplazo null con una cadena vacía '' . Sin embargo, realmente quiero que el valor predeterminado sea null .
Entonces, mi pregunta es doble: primero, ¿por qué el resultado de la declaración de cambio siempre es nulo cuando devuelvo un valor nulo en el caso predeterminado? Y segundo, ¿cuál es entonces la forma correcta de devolver un valor null cuando ninguno de los patrones coincide?
Gracias
EDITAR: estoy usando Intellij IDEA como IDE. ¿Quizás es un error de IDEA inellij?
Su declaración de cambio parece correcta. Basado únicamente en la advertencia de IntelliJ, parece que todas las declaraciones de casos individuales devuelven un valor nulo. Como menciona cuando cambia el valor predeterminado a una cadena vacía, la advertencia desaparece ya que ahora todas las declaraciones de casos no devuelven valores nulos.
Además, cuando se trata de valores nulos, siempre puede usar valores opcionales.