知识点记录-JAVA8常用语法特点Optional
练习Optional
package com.test.jdk8;
import java.util.Optional;
import java.util.OptionalDouble;
public class TestOptional {
private int ad = 16;
private int qe = 156;
private String string = "156;system";
public static void main(String[] args) {
Integer integer1 = 123;
System.out.println("integer1=" + Optional.ofNullable(integer1).orElse(5));
Optional<Integer> optionalInteger1 = Optional.ofNullable(integer1);
if (optionalInteger1.isPresent()) {
System.out.println("optionalInteger1有值" + optionalInteger1.get());
} else {
System.out.println("optionalInteger1没有值");
}
Integer integer2 = null;
System.out.println("integer2=" + Optional.ofNullable(integer2).orElse(5));
// System.out.println(Optional.of(integer2).orElse(5)); //null值用Optional.of,有异常NullPointerException
Optional<Integer> optionalInteger2 = Optional.ofNullable(integer2);
if (optionalInteger2.isPresent()) {
System.out.println("optionalInteger2有值" + optionalInteger2.get());
} else {
System.out.println("optionalInteger2没有值");
}
Optional<Integer> optionalInteger3 = Optional.of(5);
System.out.println("optionalInteger3=" + optionalInteger3.get());
try {
OptionalDouble optionalDouble = OptionalDouble.empty();
System.out.println("optionalDouble.get()=" + optionalDouble.getAsDouble());
} catch (Exception e) {
System.err.println("optionalDouble.get异常" + e.getLocalizedMessage());
}
try {
Optional<String> stringOptional = Optional.empty();
System.out.println("stringOptional.get()=" + stringOptional.get());
} catch (Exception e) {
System.err.println("stringOptional.get异常" + e.getLocalizedMessage());
}
String string1 = "string1";
Optional<String> stringOptional1 = Optional.of(string1);
System.out.println("stringOptional1.isPresent()=" + stringOptional1.isPresent());
System.out.println("stringOptional1.get()=" + stringOptional1.get());
string1 = null;
string1 = Optional.ofNullable(string1).orElse("string1 orElse");
System.out.println("string1=" + string1);
String string2 = null;
Optional<String> stringOptional2 = Optional.ofNullable(string2);
stringOptional2.ifPresent(System.out::println);
User user1 = null;
System.out.println("user1=" + Optional.ofNullable(user1).orElse(createUser()));
System.out.println("user1=" + Optional.ofNullable(user1).orElseGet(TestOptional::createUser));
// user1 = new User("user1",1);
try {
Optional.ofNullable(user1).orElseThrow(() -> new Exception("user1==null"));
} catch (Exception e) {
System.err.println(e.getMessage());
}
String name1 = Optional.ofNullable(user1).map(u -> u.getName()).orElse("default-name1");
System.out.println("name1=" + name1);
User user2 = new User("user2", 2);
System.out.println("user2=" + Optional.ofNullable(user2).orElse(createUser("name20", 20)));
System.out.println("user2=" + Optional.ofNullable(user2).orElseGet(() -> createUser("name15", 15)));
String name2 = Optional.ofNullable(user2).map(u -> u.getName()).orElse("def-name2");
System.out.println("name2=" + name2);
}
private static User createUser() {
System.out.println("createUser");
return new User("user", 0);
}
private static User createUser(String name, int age) {
System.out.println("createUser");
return new User(name, age);
}
public static class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
}