Java JDK 8 추가 옵션 도구 클래스 설명
빈 포인터 이 옵션 은 자바 응용 프로그램 이 실패 하 는 가장 흔 한 원인 입 니 다.이전 에는 빈 포인터 이상 을 해결 하기 위해 Google 의 유명한 Guava 프로젝트 에 Optional 클래스 를 도 입 했 습 니 다.Guava 는 빈 값 을 검사 하 는 방식 으로 코드 오염 을 방지 하고 프로그래머 에 게 더 깨끗 한 코드 를 쓰 도록 격려 했 습 니 다.Google Guava 의 영감 을 받 아 Optional 클래스 는 자바 8 라 이브 러 리 의 일부분 이 되 었 습 니 다.optional 은 실제 용기 입 니 다.T 형식의 값 을 저장 하거나 null 만 저장 할 수 있 습 니 다.optional 은 빈 값 검 사 를 하지 않 아 도 되 는 유용 한 방법 을 많이 제공 합 니 다.
1.이전 null 처리
@Test
public void test01(){
//String userName = " ";
String userName = null;
if(userName != null){
System.out.println(" :" + userName.length());
}else{
System.out.println(" ");
}
}
2.선택 클래스optional 은 하위 클래스 가 없 는 도구 클래스 입 니 다.optional 은 null 을 위 한 용기 대상 입 니 다.Null 검 사 를 피하 고 NullpointerException 을 방지 하 는 것 이 주요 역할 입 니 다.
3.optional 의 기본 사용
optional 대상 생 성 방식
/**
* Optional
*/
@Test
public void test02(){
// of of null
Optional<String> op1 = Optional.of("zhangsan");
//Optional<Object> op2 = Optional.of(null);
// ofNullable null
Optional<String> op3 = Optional.ofNullable("lisi");
Optional<Object> op4 = Optional.ofNullable(null);
// empty Optional
Optional<Object> op5 = Optional.empty();
}
4.optional 의 상용 방법
/**
* Optional
* get(): Optional , NoSuchElementException
* get() isPresent
* isPresent(): , true, false
* orElse(T t): , , t
* orElseGet(Supplier s): , , Lambda
*/
@Test
public void test03(){
Optional<String> op1 = Optional.of("zhangsan");
Optional<String> op2 = Optional.empty();
// Optional
if(op1.isPresent()){
String s1 = op1.get();
System.out.println(" :" +s1);
}
if(op2.isPresent()){
System.out.println(op2.get());
}else{
System.out.println("op2 Optional ");
}
String s3 = op1.orElse(" ");
System.out.println(s3);
String s4 = op2.orElse(" ");
System.out.println(s4);
String s5 = op2.orElseGet(()->{
return "Hello";
});
System.out.println(s5);
}
@Test
public void test04(){
Optional<String> op1 = Optional.of("zhangsan");
Optional<String> op2 = Optional.empty();
//
op1.ifPresent(s-> System.out.println(" :" +s));
op1.ifPresent(System.out::println);
}
/**
* , Person name
*/
@Test
public void test05(){
Person p = new Person("zhangsan",18);
Optional<Person> op = Optional.of(p);
String name = getNameForOptional(op);
System.out.println("name="+name);
}
/**
* Person name
* Optional
* @param op
* @return
*/
public String getNameForOptional(Optional<Person> op){
if(op.isPresent()){
String msg = //op.map(p -> p.getName())
op.map(Person::getName)
//.map(p -> p.toUpperCase())
.map(String::toUpperCase)
.orElse(" ");
return msg;
}
return null;
}
/**
* Person name
* @param person
* @return
*/
public String getName(Person person){
if(person != null){
String name = person.getName();
if(name != null){
return name.toUpperCase();
}else{
return null;
}
}else{
return null;
}
}
자바 JDK 8 에 추 가 된 Optional 도구 류 에 대한 설명 은 여기까지 입 니 다.자바 Optional 도구 류 에 관 한 더 많은 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.