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 |
댓글