HihoBookStudy / EffectiveJava

이펙티브 자바 북스터디입니다.
1 stars 0 forks source link

[아이템 4] private 생성자 만 두었을 때 정말로 어떠한 경우에도 인스턴스 생성을 막을 수 있을까요? #3

Closed ForteEscape closed 3 months ago

ForteEscape commented 3 months ago
public class UtilityClass {

    // prevent compiler create default constructor
    private UtilityClass() {
        throw new AssertionError();
    }
    ...
}
IAGREEBUT commented 3 months ago

추가) 리플렉션을 통한 공격이 아니더라도 private으로 선언하는 경우 해당 클래스 내부의 다른 메소드에서 생성자를 호출 할 수 있게됩니다

Limgayoung commented 3 months ago

throw new AssertionError() 부분을 제외한다면 리플렉션 공격으로 객체 인스턴스 생성이 가능합니다. 해당 상황을 설명해놓은 링크입니다. https://www.baeldung.com/java-private-constructor-access