> Java > java지도 시간 > 본문

질문 형식에 중점을 두고 귀하의 기사를 기반으로 한 몇 가지 잠재적인 제목은 다음과 같습니다. 직접적이고 간결함: * Java에서 비정적 내부 클래스가 정적 메소드를 가질 수 없는 이유는 무엇입니까? * 정적 메서드는 아니요

Patricia Arquette
풀어 주다: 2024-10-27 13:42:02
원래의
387명이 탐색했습니다.

Here are some potential titles based on your article, focusing on the question format: 

Direct and concise:

* Why Can't Non-Static Inner Classes Have Static Methods in Java? 
* Static Methods in Non-Static Inner Classes: A Java Limitation Solved in Jav

비정적 내부 클래스의 정적 메서드: Java 대 Java 16

Java에서는 비정적 내부 클래스에 정적 메서드가 없습니다. 내부 클래스는 오랫동안 제한되어 왔습니다. 이러한 제한이 존재하는 이유에 대한 의문이 생깁니다.

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>
로그인 후 복사

이 경우 내부 클래스는 정적으로 선언됩니다. 즉, 외부 클래스의 특정 인스턴스에 바인딩되지 않습니다. 수업. 결과적으로 정적 메서드는 특정 인스턴스에 묶여 있지 않기 때문에 내부 클래스 내에서 정의할 수 있습니다.

Java 16 and Beyond: Removal the Restriction

In Java 16에서는 이 제한이 해제되었습니다. 이제 비정적 내부 클래스에서 정적 메서드를 선언할 수 있습니다. 그러나 그렇게 할 때는 주의하는 것이 중요합니다. 내부 클래스의 정적 메서드는 바깥쪽 클래스와 클래스 이름을 공유하므로 잠재적인 이름 지정 충돌이 발생할 수 있습니다.

위 내용은 질문 형식에 중점을 두고 귀하의 기사를 기반으로 한 몇 가지 잠재적인 제목은 다음과 같습니다. 직접적이고 간결함: * Java에서 비정적 내부 클래스가 정적 메소드를 가질 수 없는 이유는 무엇입니까? * 정적 메서드는 아니요의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!