ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 함수형 인터페이스란?
    Java 2020. 10. 27. 21:33

    함수형 인터페이스

     

    우리가 잘 사용하고 있지만, 잘 모르고 사용했던, 함수형 인터페이스 (Functional Interface)는

    인터페이스 내에 추상 메서드가 딱 하나 만 있으면 Functional Interface라고 한다.

     

    함수형 인터페이스 예제

    //1번
    public interface Functional {
        void doIt();
    }
    
    //2번
    public interface Functional {
        abstract void doIt();
    }
    
    //3번
    @FunctionalInterface
    public interface Functional {
        abstract void doIt();
    
        static void printName(){
            System.out.println("java");
        }
    
        default void printHello(){
            System.out.println("hello");
        }
    }
    

    @FunctionalInterface를 추가하면, 추상 메서드가 2개이거나, 함수형 인터페이스 선언이 잘못되었을 때 컴파일러에서 알아서 걸러주기 때문에, 좀더 체계적인 코드 작성이 가능하다. 

     

    함수형 인터페이스를 사용하고 싶다면

    자바 8 이전이후로 나누게 되는데

    //Before JAVA 8 익명 내부클래스 사용 inner anonymous class 
    public class Main {
        public static void main(String[] args) {
                Functional functional = new Functional() {
                    @Override
                    public void doIt() {
                        System.out.println(" JAVA 8 이전의 방식 ");
                    }
                };
        }
    }
    
    //After JAVA8 람다 사용 Lambda Expression
    public class Main {
        public static void main(String[] args) {
                
                Functional functional1 = () -> System.out.println("JAVA 8 이후의 방식");
        
        }
    }
    

     

    이렇게 람다 식을 사용해서 좀 더 깔끔하고 가독성 좋게 사용이 가능해진다. 

     

    코틀린 처럼 함수를 정의한 것처럼 보이지만, 자바 내에서는 특수한 형태의 Object 이다. 함수형 인터페이스를 inline 으로 구성한 것이다. 

     

    >다음은 자바에서 함수형 인터페이스를 어떻게 지원하는지 기본 API를 보자

    'Java' 카테고리의 다른 글

    [Java-4] JVM의 구조  (1) 2020.11.11
    [Java-3] JVM과 JIT 컴파일러란?  (2) 2020.11.10
    [Java-2] 바이트 코드란  (1) 2020.11.09
    [Java-1] 컴파일 방법 & 과정  (13) 2020.11.09
    NullPointerException(NPE) 필요한 이유  (0) 2020.10.20

    댓글

Designed by Tistory.