home
자바
home
😉

메서드 레퍼런스

강의명
JAVA 8
강의순서
2
과목
☕자바
수강상태
완료
람다가 하는 일이 기존 메서드 또는 생성자를 호출하는 거라면, 메서드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다.
메서드 참조하는 방법
스태틱 메서드 참조
타입::스태틱 메서드
특정 객체의 인스턴스 메서드 참조
객체 레퍼런스::인스턴스 메서드
임의 객체의 인스턴스 메서드 참조
타입::인스턴스 메서드
생성자 참조
타입::new
메서드 또는 생성자의 매개변수로 람다의 입력값을 받는다.
리턴값 또는 생성한 객체는 람다의 리턴값이다.
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; } }
Java
복사
이러한 클래스가 있다고 가정한다.
//String 타입으로 입력받고 동일한 String 타입으로 리턴해주어서 UnaryOperator 사용 UnaryOperator<String> hi = Greeting::hi; //Greeting 클래스의 static hi 메서드 참조 System.out.println(hi.apply("jjw")); //출력: hi jjw
Java
복사
스태틱 메서드 참조
Greeting greeting = new Greeting(); UnaryOperator<String> hello = greeting::hello; //Greeting 클래스의 hello 메서드 참조 System.out.println(hello.apply("jjw")); //출력: hello jjw
Java
복사
특정 객체의 인스턴스 메서드 참조
String[] names = {"ajjw", "bjjw", "cjjw"}; Arrays.sort(names, new Comparator<String>() { @Override public int compare(String o1, String o2) { return 0; } }); //Comparator는 함수형 인터페이스 //메서드 레퍼런스로 표현 Arrays.sort(names, String::compareToIgnoreCase);
Java
복사
임의 객체의 인스턴스 메서드 참조
//1. 입력값 없이 리턴해주는 Supplier 사용 Supplier<Greeting> newGreeting = Greeting::new; Greeting greeting = newGreeting.get(); //2. 입력값을 받고 리턴해주는 Function 사용 Function<String, Greeting> jjwGreeting = Greeting::new; Greeting jjw = jjwGreeting.apply("jjw"); System.out.println(jjw.getName()); //출력: jjw
Java
복사
생성자 참조