Java 8 如何正确使用 Optional
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;
import java.util.Optional;
@Data
@EqualsAndHashCode(exclude={"self"})
@ToString(callSuper=true, exclude="self")
public class PersonDto {
private Integer id;
private String name;
private String password;
private Double self;
public boolean validateName1() {
return StringUtils.equals("hjz", name);
}
public static boolean validateName2(String name) {
return StringUtils.equals("hjz", name);
}
public static void main(String[] args) {
PersonDto personDto = new PersonDto();
personDto.setName("hjz");
// String name = Optional.ofNullable(personDto)
// .map(obj -> obj.getName())
// .filter(StringUtils::isNotEmpty)
// .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));
// String name = Optional.ofNullable(personDto)
// .map(obj -> obj.getName())
// .filter(PersonDto::validateName2)
// .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));
String name = Optional.ofNullable(personDto)
.filter(PersonDto::validateName1)
.map(obj -> obj.getName())
.orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));
System.out.println(name);
}
}