인프런의 더자바, JAVA8 강의를 들으며 정리한 내용입니다.
람다 표현식이 단 하나의 메소드만을 호출하는 경우, 불필요한 매개변수를 제거하여 간결하게 표현하도록 해줌
스태틱 메소드 참조 | 타입::스태틱 메소드
특정 객체의 인스턴스 메소드 참조 | 객체 레퍼런스::인스턴스 메소드
임의 객체의 인스턴스 메소드 참조 | 타입::인스턴스 메소드
생성자 참조 | 타입::new
public class A_MethodReference {
//static method
public static String hi(String name){
return "hi "+name;
}
}
//static method reference
UnaryOperator<String> hi = A_MethodReference::hi;
System.out.println(hi.apply("ahreum")); // hi ahreum
public class A_MethodReference {
//instance method
public String hello(String name){
return "hello "+name;
}
}
//instance method reference
A_MethodReference a_methodReference = new A_MethodReference();
UnaryOperator<String> hello = a_methodReference::hello;
System.out.println(hello.apply("ahreum")); // hello ahreum
String[] names = {"vvv","ahreum","hong"};
Arrays.sort(names, String::compareToIgnoreCase);
//Comparator 함수형 인터페이스
System.out.println(Arrays.toString(names)); // ahreum, hong, vvv
public class A_MethodReference {
private String name;
//입력값 없는 생성자 (case 1)
public A_MethodReference(){
}
//입력값 받는 생성자 (case 2)
public A_MethodReference(String name){
this.name = name;
}
}
//constructor reference
//입력값 없는 생성자 만들어짐 (case 1)
Supplier<A_MethodReference> a_methodReferenceSupplier= A_MethodReference::new;
a_methodReferenceSupplier.get(); // 이 때 만들어짐
//입력값 받는 생성자 만들어짐 (case 2)
Function<String, A_MethodReference> ahriGreeting = A_MethodReference::new;
A_MethodReference aMethodReference2 = ahriGreeting.apply("ahreum");
System.out.println(aMethodReference2.getName()); // ahreum
compareTo() 와 compareToIgnoreCase()
- int compareTo(String str) : 인자값으로 비교대상 String 값을 받아서 int 로 반환함
ex) "abc".compareTo("def")- int compareToIgnoreCase() : compareTo와 비슷하나 대소문자 무시