익명구현객체는 이름을 있지만 밝혀지지 않은 객체를 말합니다.

 

 


 

 

먼저 인터페이스에 대한 예시 코드입니다.

@FunctionalInterface
public interface IParent {
	
    public static final double PI = 3.14159;    // 1. 진리값(상수)
	
    public abstract void parentMethod();        // 2. 추상메서드(규격)
	
    public default void defaultMethod() {       // 3. default method
        System.out.println("defaultMethod() invoked");
    } // defaultMethod
	
    public static void staticMethod() {         // 4. static method
        System.out.println("staticMethod() invoked");
    } // staticMethod
	
} // end interface

 

인터페이스에 추상 메서드가 하나만 존재하면 그 인터페이스를 함수적 인터페이스,

즉, functional Interface라고 합니다.

 

위의 코드는 parentMethod의 추상 메서드가 하나만 존재하므로 함수적 인터페이스라고 할 수 있습니다.

 

다음 코드는 함수적 인터페이스를 객체로 구현하는

익명구현객체 코딩기법에 대한 예시 코드입니다.

@Log4j2
public class App {

    // 익명구현객체(Anonymous) 코딩기법
    public static void main(String[] args) {
		
        IParent parent = 
                // 1. 인터페이스에 new 연산자를 적용한다.
                new IParent() {

                    // 2. 인터페이스에  선언된 모든 추상 메서드를 재정의한다.
                    @Override
                    public void parentMethod() {
                        log.trace("parentMethod() invoked");
                        log.trace(this);
                    } // parentMethod
					
                }; // 익명구현객체
				
                log.trace("2. parent: {} invoked", parent);
                parent.parentMethod();
				
    } // main
	
} // end class

 

익명 객체에는 Constructor를 생성할 수 없고 정적 필드나 변수 등은 생성이 가능합니다.

 

'Java' 카테고리의 다른 글

Exception Handling  (0) 2023.07.28
Exception  (0) 2023.07.27
인터페이스 다중 상속  (0) 2023.07.26
패턴 매칭 연산자  (0) 2023.07.26
인터페이스  (0) 2023.07.25

+ Recent posts