-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAddressMain2.java
More file actions
34 lines (25 loc) · 1.01 KB
/
Copy pathAddressMain2.java
File metadata and controls
34 lines (25 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package optional;
import optional.model.Address;
import optional.model.User;
import java.util.Optional;
public class AddressMain2 {
public static void main(String[] args) {
User user1 = new User("user1", null);
User user2 = new User("user2", new Address("hello street"));
printStreet(user1);
printStreet(user2);
}
private static void printStreet(User user) {
Optional<String> userStreetOpt = getUserStreet(user);
userStreetOpt.ifPresentOrElse(
System.out::print,// 값이 있을 때
() -> System.out.println("Unknown") // 값이 없을 떄
);
}
static Optional<String> getUserStreet(User user){
return Optional.ofNullable(user) // user가 null일 수 있으므로 ofNullable 사용
.map(User::getAddress) // user.getAddress() 처리
.map(Address::getStreet); // address.getStreet() 처리
// 여기서 map 체이닝 중간에 null이면 Optional.empt()를 반환
}
}