본문 바로가기

개인적으로 공부한 것을 정리해 놓은 블로그입니다 틀린 것이 있으면 댓글 부탁 드립니다!


JAVA

JAVA 스터디 23 - 메서드 참조(method reference)

반응형

메서드 참조 ? 

 

 하나의 메서드만 호출하는 람다식은 '메서드 참조' 로 더 간단히 할 수 있다.

 

static 메서드 참조

//1.문자열 s 를 파라미터로 받아서 Int로 변환하여 반환하는 메서드
Integer method(String s){
	return Integer.parseInt(s);
}

//2.위 메서드의 람다식 표현

Function<String,Integer> func = (s)->Integer.parseInt(s);

//3.위 람다식을 메서드 참조 표기
//입력값 출력값에 대한 정보가 Function의 제네릭에 들어 있기 때문에 
//2번의 (s)를 지우고 아래처럼 사용할 수 있다 . 
//메서드만 참조해주면 알아서 타입을 잡아준다.
Function<String,Integer> func = Integer::parseInt

 

메서드 참조가 이해가 안간다면 메서드 참조를 람다식으로 바꿔보는 연습을 해보면 좋다 .

 

생성자의 메서드 참조

 

생성자에서 메서드 참조를 사용할 수 있다.

 

// 파라미터가 없는 생성자를 람다식으로
        Supplier<MyClass> c = ()->new MyClass();
        // 파라미터가 없는 생성자를 메서드 참조로 표현
        Supplier<MyClass> c2 = MyClass::new;
        // 파라미터가 있는 생성자를 메서드 참조로 표현
        Function<Integer,MyClass> c4 = MyClass::new;

        //객체를 반환해 준다.
        MyClass myClass = c.get();
        
        //int q=4 라는 멤버를 갖은 MyClass객체를 리턴한다
        MyClass myClass2 = c4.apply(4);
        int q = myClass2.getQ();
        //4
        System.out.println(q);

 

배열의 메서드 참조

 

//배열의 메서드 참조
        Function<Integer,int[]> f = int[]::new;
        int[] apply2 = f.apply(5);
        System.out.println(apply2.length);
반응형