, 다음 리소스 파일 이름은 통상적으로 다음과 같습니다
separator + name.replaceAll("\\.", separator) + ".class"
클래스의 binary name는 바이트 코드 파일에 사용되는 값 및 Class.getName()
에 의해 반환됩니다.
리소스 이름 구분 기호는 반드시 File.separator
과 같을 필요가 없습니다. 예를 들어 클래스 로더가 JAR 파일에서로드하는 경우 파일 시스템 규칙이 아닌 JAR 파일 API로 구분 기호가 정의됩니다.
중첩 된/익명의 클래스에 대해 이진 이름을 사용했다면 모든 작업이 가능합니다. 그러나 정규화 된 클래스 이름을 이진 클래스 이름에 매핑하는 것은 컴파일러에 따라 다르며 자동으로 쉽게 재현 할 수 없습니다. (컴파일러가 $n
이름 구성 요소를 할당하기 위해 사용하는 구성표를 재현해야하며 소스 코드에 액세스해야합니다.) 따라서 클래스 로더가 완전한 이름을 이해하도록하는 것은 어려울 것입니다. 그러나 정상적인 클래스 로더가 그렇지 않기 때문에 괜찮습니다.
마지막으로, "전통적으로"말했음을 유의하십시오. 이론적으로 매핑을 일관성있게 수행하는 방법을 파악할 수 있다면 어떤 클래스 파일 명명 체계라도 구현할 수 있습니다.
리소스에는 항상'/'- 분리 된 경로 이름이 있습니다. (http://download.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html 참조) – dacwe