본문 바로가기
자바

람다식 매소드 레퍼런스

by 근즈리얼 2021. 7. 13.
728x90

람다식에 대해서 알아보며 이미 만들어진 메소드를 람다식에 어떻게 활용할 수 있는지 알아보자!!

 

- static 메소드

- 일반 메소드

- 매개변수가 필요한 생성자

- 매개변수가 없는 생성자

 

위의 4가지를 코드를 통해서 알아본다!!

 

코드

package functional_interface_rambda.four;

import java.util.Arrays;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.function.UnaryOperator;

public class App {

    public static void main(String[] args) {
        Greeting greeting = new Greeting();
        //static 메소드 레퍼런스
        UnaryOperator<String> hi = Greeting::hi;
        System.out.println(hi.apply("근혁"));

        // hello 메소드 레퍼런스스
        UnaryOperator<String> hello = greeting::hello;
        System.out.println(hello.apply("근혁"));

        //매개변수가 없는 생성자 레퍼런스
        Supplier<Greeting> newGreeting = Greeting::new;

        //매개변수가 string인 생성자 래퍼런스
        Function<String,Greeting> greet = Greeting::new;
        Greeting geun = greet.apply("근혁");
        System.out.println(geun.getName());

        String[] name = {"geun","son","kane"};

        Arrays.sort(name,String::compareTo);
        System.out.println(Arrays.toString(name));
    }
}

/*
출력값
hi근혁
hello근혁
근혁
[geun, kane, son]
*/

** 주의

- Supplier은 들어오는 값은 없이 나오는 값만 있으므로 매개변수가 필요없는 생성자를 불러온다.

- 반대로 String을 받고 Greeting을 리턴하는 경우 String을 매개변수로 받는 생성자를 불러온다.

- 생성자를 이용할 때 Greeting 인스턴스를 만든 것이 아니다.

 

 

미리 만들어둔 메소드들

package functional_interface_rambda.four;

public class Greeting {

    private String name;

    public Greeting(){

    }

    public Greeting(String name){
        this.name = name;
    }

    public String hello(String name){
        return "hello" + name;
    }

    public static String hi(String name){
        return "hi" + name;
    }
    public String getName(){
        return this.name;
    }
}
728x90

'자바' 카테고리의 다른 글

자바 8 stream 기본  (0) 2021.07.23
인터페이스 기본 메소드(Default Methods)  (0) 2021.07.16
함수형 인터페이스와 람다표현식  (0) 2021.07.13
문자열 자르기 substring  (0) 2021.02.04
compare 메소드  (0) 2021.01.26

댓글