Tengo el siguiente código de búsqueda en Java:
return getTableViewController().getMe().getColumns().stream().filter($->Database.equalsColumnName($.getId(), columnId)).findFirst().get();
Quería encontrar la columna por nombre y devolver la primera que se encuentre.
Entiendo que hay un caso en el que no se encuentra nada y debe procesarse, pero ¿cómo?
¿Es esto lo que quiere con este juramento?
'Optional.get()' without 'isPresent()' check
?
¿Como arreglar? Deseo volver nullsi no encuentro nada.
ACTUALIZAR
Está bien, está bien, simplemente no me di cuenta, eso findFirst()vuelve Optional.
java
java-8
java-stream
optional
Atenúa
fuente
fuente

$como identificador en Java: JLS Sec 3.8 : "El signo $ debe usarse solo en código fuente generado mecánicamente o, raramente, para acceder a nombres preexistentes en sistemas heredados".Respuestas:
Reemplazar
get()conorElse(null).fuente
orElseempieza con "o"?elsees una palabra clave.orElselugar degetporquegetlanzará una excepción si el valor es nulo.orElseGet()toma aSupplier<T>, mientras queorElse()toma aT. Estos no son equivalentes.orElse; no hay ninguna referenciaorElseGeten su comentario;)...findFirst().orElse(null);Devuelve el valor si está presente; de lo contrario, devuelve
null. La documentación dice que el parámetro pasado puede sernull(lo que está prohibidoorElseGetyorElseThrow).fuente
mi solución fue comprobarlo de esta manera
if(item.isPresent()){ item.get().setId("1q2w3e4r5t6y") }fuente
Se creó Optional para que el código pudiera, después de todas estas décadas, finalmente comenzar a evitar null.
Elimine el .get (), devuelva el Opcional en sí y haga que el código de llamada se ocupe de él de manera adecuada (tal como debería hacerlo en el caso de que devuelva nulo).
fuente