Java의 다중 클래스 선언: 자세한 설명
Java에서는 여러 최상위 클래스가 단일 파일 내에 공존할 수 있습니다. 그 중 하나는 공개로 지정됩니다. 내부, 중첩 또는 익명 클래스와 유사한 특정 이름이 없는 이 기술은 두 가지 주요 질문을 제시합니다:
1. 이러한 보조 클래스는 해당 컴파일 단위 외부의 코드와 상호 작용하는 것이 제한되어 있습니까?
JLS(Java 언어 사양)에서는 보조 클래스가 다른 컴파일 단위의 코드에서 참조되는 것을 금지하는 제한을 허용하지만 시행하지는 않습니다. 동일한 패키지 내에서. 이는 package-private으로 처리할 수 없음을 의미합니다.
2. 다양한 Java 구현에서는 이 제한 사항을 다르게 처리합니까?
JLS와 달리 Java 컴파일러 javac는 외부 파일과 동일한 이름을 공유하지 않는 한 외부 파일에서 최상위 클래스를 참조하는 것을 효과적으로 방지하는 제한 사항을 적극적으로 적용합니다.
자세한 설명
이 제한 사항은 다음과 같은 경우에 나타납니다. 파일 A의 클래스가 파일 B의 클래스에 액세스하려고 시도합니다. 여기서 파일 B에는 파일 B와 동일한 이름을 가진 다른 클래스도 포함되어 있습니다. 그러나 파일 A의 클래스가 동일한 이름을 가진 파일 B의 다른 클래스에도 액세스하는 경우 컴파일 오류가 사라집니다.
설명:
FileA.java:
public class FileA { private FileB fileB; }
FileB.java:
public class FileB { private class FileBClass { } }
컴파일 중 FileA.java 단독으로는 오류:
FileA.java:2: cannot find symbol symbol : class FileBClass location: class FileA
이 문제를 해결하려면 FileA.java도 FileB.java를 참조하거나 FileB.java를 참조해야 합니다. 컴파일된
결론
명시적으로 금지되지는 않지만 javac의 강제 제한은 상주하는 파일과 동일한 이름을 공유하지 않는 한 외부 파일의 최상위 클래스를 참조하는 것을 권장하지 않습니다. 따라서 대부분의 경우 이 방법은 실용적이지 않습니다.
위 내용은 하나의 파일에 있는 여러 최상위 Java 클래스가 외부 코드와 상호 작용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!