목차
- UnaryOperator<T> 인터페이스
- Greeting 클래스
- 메소드 래퍼런스
- 참고 자료
UnaryOperator<T> 인터페이스
@FunctionalInterface
public interface UnaryOperator<T> extends Function<T, T> {
static <T> UnaryOperator<T> identity() {
return t -> t;
}
}
Function 인터페이스를 상속받은 함수형 인터페이스이다.
Function 인터페이스는 매개 변수 타입 T, 반환 타입 R을 지정해야 하지만
UnaryOperator 인터페이스는 하나의 타입만 지정하면 된다.
즉 반환 타입 = 매개 변수 타입 같은 경우에 사용하면 된다.
활용
public class Main {
public static void main(String[] args) {
UnaryOperator<String> hi = s -> s + " hi";
System.out.println(hi.apply("zeus"));
}
}
// 출력 zeus hi
Greeting 클래스
메소드 래퍼런스를 설명하기 위해 만든 클래스
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;
}
}
메소드 래퍼런스
Greeting 클래스의 static 메소드 hi는 UnaryOperator 함수형 인터페이스에서 정의할 동작과 동일하다.
// Greeting 클래스 static Method
public static String hi(String name){
return "hi " + name;
}
// 함수형 인터페이스 람다 표현식
UnaryOperator<String> hi = s -> "hi " + name;
static 메소드 래퍼런스 활용
public class Main {
public static void main(String[] args) {
// static 메소드 래퍼런스 활용
UnaryOperator<String> hi = Greeting::hi;
hi.apply("kkk"); // kkk hi 출력
}
}
인스턴스 메소드 래퍼런스 활용
public class Main {
public static void main(String[] args) {
// 인스턴스 메소드 래퍼런스 활용
Greeting greeting = new Greeting();
UnaryOperator<String> hi = greeting::hello;
}
}
생성자 활용
// 생성자() 활용
Supplier<Greeting> greetingSupplier = Greeting::new;
// 생성자(String name) 활용
Function<String, Greeting> greetingFunction = Greeting::new;
comparator 함수형 인터페이스
int compare(T o1, T o2);
// comparator
ArrayList<String> list = new ArrayList<>(List.of("라", "가", "다", "나"));
Collections.sort(list, String::compareTo);
System.out.println(list); // [가, 나, 다, 라]
참고 자료
'Computer Sience > Java' 카테고리의 다른 글
[JAVA8] 자바 8 API의 기본 메소드와 스태틱 메소드 (6) | 2024.10.02 |
---|---|
[JAVA8] 인터페이스 기본 메소드와 스태틱 메소드 (0) | 2024.10.02 |
[JAVA8] 람다 표현식 + 변수 캡쳐 & 변수 쉐도잉 (0) | 2024.09.30 |
[JAVA8] 자바에서 제공하는 함수형 인터페이스 (0) | 2024.09.30 |
[JAVA8] 함수형 인터페이스와 람다 표현식 + 자바 함수형 프로그래밍 (2) | 2024.09.30 |