Java 16 이전 버전에서 정적 메서드를 정의하려고 시도하는 경우 비정적 내부 클래스 내에서는 컴파일러 오류가 발생합니다. 예를 들어 다음 코드 조각은 실패합니다.
<code class="java">public class Foo { class Bar { static void method() {} // Compiler error } }</code>
비정적 내부 클래스는 해당 클래스의 인스턴스에 연결되어 있습니다. 내부 클래스의 모든 인스턴스에는 해당 클래스 인스턴스에 대한 숨겨진 참조가 있습니다. 이는 내부 클래스 내의 정적 메서드가 바깥쪽 클래스에 대한 참조를 유지해야 함을 의미하며, 이는 규정 규칙을 위반합니다.
내부 클래스 내에서 정적 메서드를 정의하려면 다음을 수행해야 합니다. 내부 클래스를 정적으로 선언해야 합니다. 정적 내부 클래스에는 바깥쪽 클래스의 인스턴스에 대한 암시적 참조가 없습니다. 결과적으로 정적 메서드를 정의할 수 있습니다.
<code class="java">public class Foo { static class Bar { // now static static void method() {} } }</code>
위 내용은 버전 16 이전 Java의 비정적 내부 클래스에서 정적 메서드를 정의할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!