Clase opcional | guayaba | Java

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *