Skip to content

Commit c6eb626

Browse files
author
Nicolai Parlog
committed
Demonstrate Optional additions in 9 and 10
1 parent b90c859 commit c6eb626

File tree

3 files changed

+26
-6
lines changed

3 files changed

+26
-6
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ Check out the [jpms](http://blog.codefx.org/tag/jpms/) tag on my blog, [this dem
116116
*[I/O](src/main/java/org/codefx/demo/java11/api/io)
117117
*[`Predicate` / `Pattern`](src/main/java/org/codefx/demo/java11/api/predicate)
118118
*[`Collection`](src/main/java/org/codefx/demo/java11/api/collection/ToArray.java)
119-
* ⑪⑨ `Optional` [in Java 11](src/main/java/org/codefx/demo/java11/api/optional/IsEmpty.java)
120-
and [in Java 9](src/main/java/org/codefx/demo/java9/api/optional/Or.java) ([article](http://blog.codefx.org/java/dev/java-9-optional/))
119+
*`Optional` [in Java 11](src/main/java/org/codefx/demo/java11/api/optional/IsEmpty.java), [in Java 10](src/main/java/org/codefx/demo/java10/api/optional/OrElseThrow.java),
120+
and [in Java 9](src/main/java/org/codefx/demo/java9/api/optional/Or.java) ([article](http://blog.codefx.org/java/dev/java-9-optional/))^
121121
*[OS processes](src/main/java/org/codefx/demo/java9/api/processes) ([JEP 102](http://openjdk.java.net/jeps/102))
122122

123123
Some of the small changes have their own articles (in which case they are linked), but many don't.
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.codefx.demo.java10.api.optional;
2+
3+
import java.util.Optional;
4+
import java.util.concurrent.ThreadLocalRandom;
5+
6+
public class OrElseThrow {
7+
8+
public static void main(String[] args) {
9+
Optional<String> randomOptional = createRandomOptional();
10+
if (randomOptional.isPresent()) {
11+
// `orElseThrow` works exactly like `get`
12+
String value = randomOptional.orElseThrow();
13+
System.out.println(value);
14+
}
15+
}
16+
17+
private static Optional<String> createRandomOptional() {
18+
return ThreadLocalRandom.current().nextInt() < 0
19+
? Optional.empty()
20+
: Optional.of("not empty");
21+
}
22+
23+
}

src/main/java/org/codefx/demo/java9/api/optional/Or.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,7 @@ public static void main(String[] args) {
1616
.forEach(System.out::println);
1717
}
1818

19-
public static Optional load(String id) {
20-
// TODO:
21-
// chain the `from` methods and return the first non-empty Optional
22-
// (if one exists)
19+
public static Optional<Customer> load(String id) {
2320
return fromMemory(id)
2421
.or(() -> fromDisk(id))
2522
.or(() -> fromRemote(id));

0 commit comments

Comments
 (0)