ForwardingFileObject — 파일 객체 호출을 위임하는 래퍼 클래스
ForwardingFileObject — 파일 객체 호출을 위임하는 래퍼 클래스
기존 FileObject 구현에 동작을 추가하거나 일부만 바꾸고 싶을 때, 전체를 다시 구현하는 건 번거로워요. ForwardingFileObject는 주어진 파일 객체로의 호출을 그대로 위임하는 래퍼 클래스예요. 하위 클래스에서 필요한 메서드만 오버라이드해서 쓸 수 있어요.
호출을 위임(forward)한다는 점에서 데코레이터 패턴의 대표적인 형태예요.
본문
클래스 선언은 다음과 같아요.
public class ForwardingFileObject<F extends FileObject>
extends Object
implements FileObject
타입 파라미터 F는 위임 대상 파일 객체의 타입이에요.
- 생성자는
ForwardingFileObject(F fileObject)로 위임할 파일 객체를 받아요. - 모든 메서드는 기본적으로 위임 대상 파일 객체(delegate)로 호출을 넘겨요. 예를 들어
openInputStream()은 delegate의openInputStream()을 그대로 호출해요. - 하위 클래스는 필요한 메서드만 오버라이드해서 동작을 확장하거나 변경할 수 있고, 추가 필드·메서드도 정의할 수 있어요.
이 클래스의 문서에서 말하는 "이 파일 객체(this file object)"는 특별히 언급하지 않는 한 간접적으로 위임 대상 파일 객체를 가리켜요. 즉 하위 클래스를 쓰는 쪽의 관점에서는 래퍼가 마치 원래 객체처럼 동작해요.
javax.tools 패키지에 속하며, FileObject 구현을 감싸 동작을 확장할 때 유용해요.