티스토리 뷰

TIL

[TIL] 자바8 이중 콜론 연산자 22/10/18

아몬드통 2022. 10. 19. 00:46
  • 오늘은 어제 알게 된 자바8의 람다 기능 중 하나인 이중 콜론 연산자를 사용해봤다.
[인스턴스]::[메소드명(or new)]
  • 위 설명처럼 사용하면 되는데 

 

원래는 이런 방식으로 람다에서 사용하지만

public List<OrdersDto> getOrdersDto(Long memberNum){
    List<OrdersDto> lists = ordersRepository.findAllByMember_MemberNum(memberNum)
            .stream()
            .map(order -> new OrdersDto(order)) // 적용 후
            .collect(Collectors.toList());
    return lists;
}

 

static 메서드나 생성자는 아래와 같은 방식으로 생성이 가능하다.

위보다 코드량이나 가독성이 올라간 느낌이 든다.

List<OrdersDto> lists = ordersRepository.findAllByMember_MemberNum(memberNum)
        .stream()
        .map(OrdersDto::new) // 적용 후
        .collect(Collectors.toList());
return lists;
  • 사실 큰 기능보다는 가독성과 코드의 양을 줄인다는데 목적이 있다.
  • 생성자를 제외하고는 static 메서드만 이런 방식으로 사용가능하다. (인스턴스 생성하면 가능하다는데 그럼 쓸 이유가 없어 보인다.) 
  • 그러므로 위 코드와 같이 Entity를 Dto로 변환하는 것과 같이 자주사용하는 곳에서 사용하면 좋을 것 같다.
  • static은 장점과 단점이 혼재하므로!
  • 장점은 불필요한 객체를 만들지 않는다는 점과 빠르다
  • 단점은 객체지향적이지 못하고, 시작 -> 종료까지 무조건 메모리에 올라가 있고 interface 구현에 사용하지 못한다.

 

공부나 코딩 하다보면 12시가 넘어가는 일이 비일비재하므로 그냥 날짜 상관없이 작성날을 내가 적어야겠다.

댓글