java guava optional

Conversión opcional de guava a Java



optional (4)

¿Cómo hacer la conversión de Guava Opcional a Java Opcional, sin utilizar ninguna sentencia if?

if (maybeSomething.isPresent()) { return java.util.Optional.of(maybeSomething.get()) } else { return java.util.Optional.empty() }


¿Qué hay de Optional javaOpt = Optional.ofNullable(guavaOpt.orNull()); ?


Depende completamente de los usos que haga actualmente de sus Opcionales de Guava; y el primer problema radica en las diferencias entre ambos.

Entre otros:

  • Guava''s Optional es abstracto, Java 8''s es final;
  • Existen métodos en Guava que no en Java 8, y viceversa.

Lo que significa que lo primero que debe determinar es sus diferentes usos de Guava; esto condicionará la forma en que tendrás que construir un Java 8 equivalente.

Pero dada la diferencia en la API para ambos, algunos de ellos parecen inevitables ...

Mi sugerencia personal aquí sería simplemente ir hasta el final y reemplazar todos los usos actuales de Guava''s con Java 8''s; y si se necesita un "período de eliminación gradual", desapruebe los métodos necesarios y proporciónelos durante el tiempo que sea necesario, hasta que Guava''s Optional se descarte por completo.


Utilizar la transformación de guayaba.

maybeSomething .transform(java.util.Optional::of).or(java.util.Optional.empty());


Guava Release 21 introdujo los métodos de conversión toJavaUtil y fromJavaUtil a la clase Optional .

Bajo el capó, parece implementarse en gran parte como sugerencia en la respuesta de Kayaman:

public java.util.Optional<T> toJavaUtil() { return java.util.Optional.ofNullable(orNull()); } ... public static <T> Optional<T> fromJavaUtil(@Nullable java.util.Optional<T> javaUtilOptional) { return (javaUtilOptional == null) ? null : fromNullable(javaUtilOptional.orElse(null)); }