6.
Optional Class
Optional is a container object which may or may not contain a non-null value.
Purpose of Optional class is to provide a type-level solution for representing optional values
instead of null references.
Optional class has the following methods.
static <T> Optional<T> empty();
static <T> Optional<T> of(T);
static <T> Optional<T> ofNullable(T);
T get();
boolean isPresent();
T orElse(T);
void ifPresent(Consumer<? super T>);
Optional<T> filter(Predicate<? super T>);
Optional<U> map(Function<? super T, ? extends U>);
Optional<U> flatMap(Function<? super T, Optional<U>>);
T orElseGet(Supplier<? extends T>);
T orElseThrow(Supplier<? extends X>) throws X;
Java Learning Center 61 Java 8 New Features
Demo1.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo1 {
public static void main(String[] args) {
// Optional<String> myopts = new Optional<String>();
//Optional.empty() method
Optional<String> myopts= Optional.empty();
System.out.println("1. "+myopts);
System.out.println("2. "+myopts.orElse("Hello Guys"));
System.out.println("3. "+myopts);
System.out.println("4. "+myopts.isPresent());
//System.out.println("5. "+myopts.get());
if(myopts.isPresent()) {
System.out.println("5. "+myopts.get());
}else {
System.out.println("6. No value Found");
}
}
}
Demo2.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
Java Learning Center 62 Java 8 New Features
public class Demo2 {
public static void main(String[] args) {
//Optional.of() method
String str ="Srinivas";
Optional<String> myopts= Optional.of(str);
System.out.println("1. "+myopts);
System.out.println("2. "+myopts.orElse("Hello Guys"));
System.out.println("3. "+myopts);
System.out.println("4. "+myopts.isPresent());
//System.out.println("5. "+myopts.get());
if(myopts.isPresent()) {
System.out.println("5. "+myopts.get());
}else {
System.out.println("6. No value Found");
}
}
}
Demo3.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo3 {
public static void main(String[] args) {
//Optional.of() with null
String str =null;
Optional<String> myopts= Optional.of(str);
System.out.println(myopts);
}
}
Java Learning Center 63 Java 8 New Features
Demo4.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo4 {
public static void main(String[] args) {
//Optional. ofNullable () method
String str =null;
Optional<String> myopts= Optional.ofNullable(str);
System.out.println("1. "+myopts);
System.out.println("2. "+myopts.orElse("Hello Guys"));
System.out.println("3. "+myopts);
System.out.println("4. "+myopts.isPresent());
if(myopts.isPresent()) {
System.out.println("5. "+myopts.get());
}else {
System.out.println("6. No value Found");
}
}
}
Demo5.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo5 {
public static void main(String[] args) {
Java Learning Center 64 Java 8 New Features
//Optional. ofNullable() method
String str ="Srinivas";
Optional<String> myopts= Optional.ofNullable(str);
System.out.println("1. "+myopts);
System.out.println("2. "+myopts.orElse("Hello Guys"));
System.out.println("3. "+myopts);
System.out.println("4. "+myopts.isPresent());
if(myopts.isPresent()) {
System.out.println("5. "+myopts.get());
}else {
System.out.println("6. No value Found");
}
}
}
Demo6.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo6 {
public static void main(String[] args) {
//isPresent() Vs ifPresent()
String str =null;
//String str ="Srinivas";
Optional<String> myopts= Optional.ofNullable(str);
if(myopts.isPresent()) {
System.out.println(myopts.get());
}
myopts.ifPresent(input -> System.out.println(input));
if(myopts.isPresent()) {
System.out.println(myopts.get().toUpperCase());
}
Java Learning Center 65 Java 8 New Features
myopts.ifPresent(input -> System.out.println(input.toUpperCase()));
System.out.println("-------------------");
System.out.println("Done!!!");
}
}
Demo7.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo7 {
public static void main(String[] args) {
//filter() method
String str1 =null;
Optional<String> myopts1 = Optional.ofNullable(str1);
Optional<String> myopts4= myopts1.filter(input -> input.contains("Sri"));
System.out.println("1 . "+myopts4);
String str2 ="Srinivas";
Optional<String> myopts2 = Optional.ofNullable(str2);
Optional<String> myopts5= myopts2.filter(input -> input.contains("Sri"));
System.out.println("2 . "+myopts5);
String str3 ="Hello Guys";
Optional<String> myopts3 = Optional.ofNullable(str3);
Optional<String> myopts6= myopts3.filter(input -> input.contains("Sri"));
System.out.println("3 . "+myopts6);
System.out.println("Done!!!");
}
}
Java Learning Center 66 Java 8 New Features
Demo8.java
package com.jlcindia.demos;
import java.util.Optional;
/*
* @Author : Srinivas Dande
* @Company: Java Learning Center
* */
public class Demo8 {
public static void main(String[] args) {
//map() method
String str1 ="Srinivas";
Optional<String> myopts1 = Optional.ofNullable(str1);
System.out.println("1. "+myopts1);
Optional<String> myopts2 = myopts1.map(input -> input);
System.out.println("2. "+myopts2);
Optional<String> myopts3 = myopts1.map(input -> input.toUpperCase());
System.out.println("3. "+myopts3);
Optional<String> myopts4 = myopts3.map(input -> new
StringBuilder(input).reverse().toString());
System.out.println("4. "+myopts4);
String mystr = null;
Optional<String> myopts = Optional.ofNullable(mystr);
System.out.println("5. "+myopts);
Optional<String> myopts5 = myopts.map(input -> input.toUpperCase());
System.out.println("6. "+myopts5);
System.out.println("Done!!!");
}
}
Java Learning Center 67 Java 8 New Features