En el siguiente método, el compilador se queja de una declaración de devolución faltante aunque solo hay una ruta única a través del método, y contiene una declaración return
. Suprimir el error requiere otra declaración return
.El compilador se queja de "declaración de devolución faltante" aunque es imposible alcanzar la condición donde falta la declaración de devolución
public int foo() {
if (true) {
return 5;
}
}
Dado que el Java compiler can recognize infinite loops, ¿Por qué no manejar esta situación así? La pregunta vinculada sugiere, pero no proporciona detalles para este caso específico.
en 'foo4()' el compilador no es tan inteligente como para comprender que la función siempre devuelve 5. Simplemente verifica que no todas las rutas de códigos devuelven algo. –
si la declaración se trata especialmente en el análisis de flujo, consulte JLS 14.21: * La sentencia if, ... se maneja de una manera inusual. Por este motivo, se trata por separado al final de esta sección * – irreputable
@irreputable En el futuro, si desea disputar el cierre de una pregunta, considere marcar la publicación para la revisión del moderador o publicarla en [meta]. Es mucho más constructivo que correr insultando a personas o destrozando publicaciones. –