본문 바로가기

Java

[java] :: 더블콜론의 의미

:: 더블콜론 의미

java8 버전에서 등장한 ::(더블콜론)은

 

1 . 람다 표현식이 단 하나의 메서드만을 호출하는 경우

2.  람다 표현식이 단순히 객체를 생성하고 반환하는 경우 

 

불필요한 매개변수를 제거하여 간단하게 표현할 수 있도록 도와주는 역할을 합니다.

 


문법

클래스이름::메소드이름

참조변수이름::메소드이름

Object::new

 


예시

1 . 메서드를 참조하는 경우

public void doubleColon(){
	List<String> list = Arrays.asList("first", "second", "third", "forth");
        list.forEach(item -> System.out.println(item));  // 기본 람다식
        System.out.println("----------");
        list.forEach(System.out::println);               // :: 문법 
}

결과
first
second
third
forth
----------
first
second
third
forth

 

2. 생성자를 참조하는 경우

    
    public void doubleColon(){
        Function<String, Food> function1 = (String a) -> new Food(a);   // 람다식
        Food food = function1.apply("pizza");
        System.out.println(food.getName());
        
        
        Function<String, Food> function2 = Food::new; // :: 문법
        food = function2.apply("pasta");
        System.out.println(food.getName());
    }
    
    
    결과
    pizza
    pasta
    
    
    
    public class Food{
        private String name;
        public Food(String name){
            this.name = name;
        }

        public String getName(){
            return this.name;
        }
    }