Java introduziu uma nova classe Opcional no jdk8. É uma classe final pública e usada para lidar com NullPointerException em aplicativos Java. Você deve importar o pacote java.util para usar esta classe. Ele fornece métodos que são usados para verificar a presença de valor para uma determinada variável.
Métodos de classe opcionais Java
Métodos | Descrição |
---|---|
público estático Opcional vazio() | Ele retorna um objeto Opcional vazio. Nenhum valor está presente para este Opcional. |
public static Opcional de (valor T) | Ele retorna um Opcional com o valor presente não nulo especificado. |
public static Opcional ofNullable (valor T) | Ele retorna um Opcional que descreve o valor especificado, se não for nulo, caso contrário, retorna um Opcional vazio. |
público T get() | Se um valor estiver presente neste Opcional, retornará o valor, caso contrário, lançará NoSuchElementException. |
booleano público isPresent() | Retorna verdadeiro se houver um valor presente, caso contrário, falso. |
public void ifPresent(Consumidor consumidor) | Se um valor estiver presente, invoque o consumidor especificado com o valor, caso contrário não faça nada. |
filtro opcional público (predicado predicado) | Se um valor estiver presente e o valor corresponder ao predicado fornecido, retorne um Opcional descrevendo o valor, caso contrário, retorne um Opcional vazio. |
mapa opcional público (mapeador de funções) | Se um valor estiver presente, aplique a ele a função de mapeamento fornecida e, se o resultado não for nulo, retorne um Opcional descrevendo o resultado. Caso contrário, retorne um opcional vazio. |
public Opcional flatMap(Função super T,Optional mapper) | Se um valor estiver presente, aplique a função de mapeamento opcional fornecida a ele, retorne esse resultado, caso contrário, retorne um Opcional vazio. |
público T ou Else (T outro) | Ele retorna o valor se estiver presente, caso contrário, retorna outro. |
public T orElseGet(Outro fornecedor) | Ele retorna o valor se presente, caso contrário, invoca other e retorna o resultado dessa invocação. |
public T orElseThrow(Exceção do fornecedorFornecedor) lança X estende Throwable | Retorna o valor contido, se presente, caso contrário lança uma exceção a ser criada pelo fornecedor fornecido. |
booleano público é igual (objeto objeto) | Indica se algum outro objeto é 'igual' a este Opcional ou não. O outro objeto é considerado igual se:
|
hashCode int público() | Ele retorna o valor do código hash do valor presente, se houver, ou retorna 0 (zero) se nenhum valor estiver presente. |
String pública paraString() | Ele retorna uma representação de string não vazia deste Opcional adequada para depuração. O formato exato de apresentação não é especificado e pode variar entre implementações e versões. |
Exemplo: Programa Java sem usar Opcional
No exemplo a seguir, não estamos usando a classe Opcional. Este programa termina de forma anormal e gera uma nullPointerException.
public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); } }
Saída:
Exception in thread 'main' java.lang.NullPointerException at lambdaExample.OptionalExample.main(OptionalExample.java:6)
Para evitar o encerramento anormal, usamos a classe Opcional. No exemplo a seguir, estamos usando Opcional. Assim, nosso programa pode ser executado sem travar.
Exemplo opcional de Java: se o valor não estiver presente
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // check for value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('string value is not present'); } }
Saída:
string value is not present
Exemplo opcional de Java: se o valor estiver presente
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE';// Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); if(checkNull.isPresent()){ // It Checks, value is present or not String lowercaseString = str[5].toLowerCase(); System.out.print(lowercaseString); }else System.out.println('String value is not present'); } }
Saída:
java optional class example
Outro exemplo opcional de Java
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index Optional checkNull = Optional.ofNullable(str[5]); checkNull.ifPresent(System.out::println); // printing value by using method reference System.out.println(checkNull.get()); // printing value by using get method System.out.println(str[5].toLowerCase()); } }
Saída:
JAVA OPTIONAL CLASS EXAMPLE JAVA OPTIONAL CLASS EXAMPLE java optional class example
Exemplo de métodos opcionais Java
import java.util.Optional; public class OptionalExample { public static void main(String[] args) { String[] str = new String[10]; str[5] = 'JAVA OPTIONAL CLASS EXAMPLE'; // Setting value for 5th index // It returns an empty instance of Optional class Optional empty = Optional.empty(); System.out.println(empty); // It returns a non-empty Optional Optional value = Optional.of(str[5]); // If value is present, it returns an Optional otherwise returns an empty Optional System.out.println('Filtered value: '+value.filter((s)->s.equals('Abc'))); System.out.println('Filtered value: '+value.filter((s)->s.equals('JAVA OPTIONAL CLASS EXAMPLE'))); // It returns value of an Optional. if value is not present, it throws an NoSuchElementException System.out.println('Getting value: '+value.get()); // It returns hashCode of the value System.out.println('Getting hashCode: '+value.hashCode()); // It returns true if value is present, otherwise false System.out.println('Is value present: '+value.isPresent()); // It returns non-empty Optional if value is present, otherwise returns an empty Optional System.out.println('Nullable Optional: '+Optional.ofNullable(str[5])); // It returns value if available, otherwise returns specified value, System.out.println('orElse: '+value.orElse('Value is not present')); System.out.println('orElse: '+empty.orElse('Value is not present')); value.ifPresent(System.out::println); // printing value by using method reference } }
Saída:
Optional.empty Filtered value: Optional.empty Filtered value: Optional[JAVA OPTIONAL CLASS EXAMPLE] Getting value: JAVA OPTIONAL CLASS EXAMPLE Getting hashCode: -619947648 Is value present: true Nullable Optional: Optional[JAVA OPTIONAL CLASS EXAMPLE] orElse: JAVA OPTIONAL CLASS EXAMPLE orElse: Value is not present JAVA OPTIONAL CLASS EXAMPLE