Introducción: Opcional es un objeto inmutable que puede contener una referencia no nula a otro objeto. Cada instancia de este tipo contiene una referencia no nula o no contiene nada, en cuyo caso decimos que la referencia está ausente. Nunca se dice que contenga nulo.
Ejemplo: Hashmap.get(key) puede devolver un valor nulo cuando la clave no se encuentra en Hashmap, pero también puede devolver un valor nulo si la clave existe pero el valor es nulo. La clase Opcional se puede usar donde se podría usar un objeto nulo .
La clase Opcional no tiene constructores, pero proporciona 3 métodos estáticos públicos para adquirir una instancia de la clase.
- Optional.fromNullable(T) permite proporcionar una referencia nula o no nula y envolverla en la nueva instancia opcional.
- Si el parámetro pasado es nulo, entonces la instancia no tiene ninguna referencia almacenada y es una instancia «ausente».
- Si el parámetro pasado no es nulo, esa referencia no nula se almacena dentro de la nueva instancia opcional.
- Optional.of(T) que actúa como Optional.fromNullable(T), excepto que espera que se le pase un parámetro no nulo. Si se le pasa nulo, se lanza una NullPointerException .
- Optional.absent() es útil cuando se tiene un código que sabe que el parámetro que se habría proporcionado a Optional.fromNullable(T) es nulo y es más claro expresarlo que una versión «ausente» de Optional debe devolverse.
Una vez que se ha adquirido una instancia de Optional, hay varios métodos de instancia que se pueden llamar en esa instancia. Por ejemplo, el método Optional.isPresent() es útil para determinar si una instancia Opcional dada tiene un parámetro no nulo dentro de ella. Una vez que se sabe que una instancia opcional contiene una referencia no nula, el método Optional.get() devuelve esa referencia no nula almacenada.
Nota: si no hay una referencia no nula, se genera una excepción al invocar este método. Entonces, es mejor llamar primero a isPresent().
Declaración :
@GwtCompatible(serializable = true) public abstract class Optional<T> extends Object implements Serializable Where, T is the type of instance that can be contained.
Métodos de clase opcionales:
Ejemplo :
// Java code to show implementation of // Guava Optional class import java.util.ArrayList; import java.util.List; import com.google.common.base.Optional; import static com.google.common.base.Strings.emptyToNull; class GuavaLibrary { // Driver code public static void main(String[] args) { // Creating a List of Strings List<String> myList = new ArrayList<String>(); // Adding values to the Strings myList.add("Geeks"); myList.add("for"); myList.add("GeeksClasses"); myList.add(null); myList.add("GeeksforGeeks"); myList.add(""); myList.add("Data Structures"); // Displaying values using Java Nulls displayValuesUsingJavaNulls(myList); // Displaying values using Guava Optional displayValuesUsingGuavaOptional(myList); } // Method to display values using Java Nulls public static void displayValuesUsingJavaNulls(List<String> myList) { System.out.println("Displaying values using Java Nulls"); // For every String in myList for (String str : myList) { if (str == null || str.isEmpty()) { System.out.println("String : Value is empty or not available"); } else { System.out.println("String : " + str); } } System.out.println(); } // Method to display values using Guava Optional public static void displayValuesUsingGuavaOptional(List<String> myList) { System.out.println("Displaying values using Guava Optional"); // For each String in myList for (String str : myList) { Optional<String> optionalName = Optional.fromNullable(emptyToNull(str)); System.out.println("String : " + optionalName.or("String : Value is empty or not available")); } } }
Producción :
Displaying values using Java Nulls String : Geeks String : for String : GeeksClasses String : Value is empty or not available String : GeeksforGeeks String : Value is empty or not available String : Data Structures Displaying values using Guava Optional String : Geeks String : for String : GeeksClasses String : String : Value is empty or not available String : GeeksforGeeks String : String : Value is empty or not available String : Data Structures
A continuación se presentan algunos otros métodos proporcionados por Guava Optional Class:
Guayaba Opcional Clase Vs java.util.Opcional
- La clase Guava Optional es serializable, pero java.util.Optional no lo es.
- java.util.Optional tiene los métodos adicionales ifPresent, filter, flatMap y orElseThrow.
- java.util.Optional ofrece las versiones especializadas en primitivos OptionalInt, OptionalLong y OptionalDouble pero Guava no las tiene.
Referencia: Google Guayaba
Publicación traducida automáticamente
Artículo escrito por Sahil_Bansall y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA