개인 필드와이 필드에 대한 설정 메소드가있는 중첩 (정적) 클래스가 있습니다. fieldA가 를 액세스 할 수 있기 때문에 중첩 된 클래스의 필드를 실제 비공개로 만들려면 어떻게해야합니까?
public class Outer{ private static class Inner{ // List node private String fieldA; // ...other members... public void setA(String fieldA) { //.. do importent stuff before setting fieldA this.fieldA = fieldA; } } }
이제 우리는 직접이 (그리고 세터 방법
setA
으로) 외부 클래스로 필드
fieldA
이
개인하지만 버그를 가지고 있었다. 필드에 직접 액세스하는 대신 setter 메서드를 사용하도록 개발자에게 적용하려면 어떻게해야합니까?
관련 항목 : Access modifiers inside a private static nested class in Java은 의도적으로 설계된 것입니다. 그러나 외부 클래스에 의한 setter 메서드 사용을 보장하기위한 해결 방법이 있습니까?
** 중첩해야합니까? 외부 코드가 변수에 액세스 할 수 있으므로 중첩되어 있기 때문에 아마 문제 일 것이라고 생각합니다. 그 중첩 된 클래스를 꺼내면 원하는 방식으로 동작합니다. –
나는 그것을 옮길 수 있었다. 그러나이 패키지의 다른 모든 클래스는이 (이전 중첩 된) 클래스를 볼 수 있습니다. 그러나 중첩 된 클래스는 외부 클래스에서만 사용됩니다. – thersch