작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
380
답변 1
5
안녕하세요. 뿌우우우님, 공식 서포터즈 David입니다.
super로 호출하게 되면 특정 상황에서 의도치 않게 동작할 수 있습니다.
예를 들어, 아래와 같이 특정 메서드(getName) 내에서 스스로를 호출하는 경우 override된 proxy의 getName()을 호출하게 되어 의도한 바와 다르게 동작하게 됩니다.
더 자세한 사항은 아래 2개의 글을 참고해주세요.
https://mangkyu.tistory.com/193
public class NamePrinter {
private String name = "MyNamePrinter";
private int count = 0;
public String getName() {
System.out.println("NamePrinter.getName() Called");
if (count < 2) {
count++;
getName();
}
return name;
}
}
public class NamePrinterProxy extends NamePrinter {
private final NamePrinter target;
public NamePrinterProxy(NamePrinter target) {
this.target = target;
}
@Override
public String getName() {
System.out.println("Proxy.getName() Called");
return super.getName();
// return target.getName();
}
}
return target.getName() 일 때
return super.getName() 일 때
감사합니다.