You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
O Java 8 possui um tipo específico para representar valores que podem não ter sido informado, que é a classe `Optional`. A partir do Java 8, ela geralmente é uma opção melhor a retornar `null` em seus métodos.
273
+
O Java 8 possui um tipo específico para representar valores que podem não ter sido informados, que é a classe `Optional`. A partir do Java 8, ela geralmente é uma opção melhor do que retornar ou armazenar `null`, pois seus métodos auxiliam em várias situações.
274
274
275
-
. Constructor
276
-
277
-
. ofNullable
275
+
. É possível criar uma instância de `Optional` com valor através do método `of`.
276
+
. É possível criar uma instância de `Optional` sem valor através do método `empty`.
277
+
. É possível checar se uma instância de `Optional` possui um valor através do método `isPresent`.
278
+
. É possível recuperar o valor de uma instância de `Optional` através do método `get`.
. É possível recuperar um valor padrão caso o `Optional` esteja vazio. O método `orElse` retorna um valor diretamente, e o `orElseGet` retorna através de uma expressão lambda.
TIP: Observe que esse é um ótimo caso para lembrar de um benefício das expressões lambda. Na utilização de `orElseGet` a expressão lambda só é executada caso o `Optional` esteja vazio. No caso do exemplo, como é apenas o retorno de uma `String`, não faz diferença. Porém, se fosse uma operação mais pesada, você só iria de fato executá-la se o `Optional` estivesse vazio. Caso houvesse valor, a expressão lambda nem seria executada, evitando o custo de processamento.
284
337
285
-
. ifPresent
338
+
. Também é possível lançar uma exceção caso um valor não esteja presente no `Optional` utilizando o método `orElseThrow`.
Exception in thread "main" java.util.NoSuchElementException: No value present
369
+
at java.util.Optional.get(Optional.java:135)
370
+
at org.j6toj8.lambda.builtininterfaces.BuiltInInterfaces_OptionalGetEmpty.main(BuiltInInterfaces_OptionalGetEmpty.java:13)
371
+
----
288
372
289
-
. orElseGet
290
373
291
-
. orElseThrow
374
+
. Existem algumas classes para lidar com valor opcionais de variáveis primitivas, já que elas não podem ser utilizada com `generics`: `OptionalInt`, `OptionalDouble`, `OptionalLong`.
0 commit comments