익명구현객체는 이름을 있지만 밝혀지지 않은 객체를 말합니다.
먼저 인터페이스에 대한 예시 코드입니다.
@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 |