>Java >java지도 시간 >Java 클래스 로더 및 네임스페이스

Java 클래스 로더 및 네임스페이스

黄舟
黄舟원래의
2016-12-20 13:32:591714검색

요약
                                                                                                                        Java의 클래스 로더와 상위 위임 모델, 네임스페이스, 런타임 패키지 등 관련 개념을 간략하게 소개하고 학습 시 혼동하기 쉬운 몇 가지 문제에 대해서도 논의해 보겠습니다.


클래스 로더의 기능과 분류

이름에서 알 수 있듯이 클래스 로더는 클래스를 JVM에 로드하는 데 사용됩니다. JVM 사양은 부트스트랩과 사용자 정의 클래스 로더라는 두 가지 유형의 클래스 로더를 정의합니다.

부트스트랩은 JVM과 함께 제공되는 클래스 로더로 java.lang.* 등과 같은 핵심 클래스 라이브러리를 로드하는 데 사용됩니다. 예를 들어, java.lang.Object는 부트스트랩에 의해 로드됩니다.

Java는 추상 클래스 ClassLoader를 제공하며 모든 사용자 정의 클래스 로더는 ClassLoader의 하위 클래스에서 인스턴스화됩니다. 시스템 클래스 로더는 JVM 구현자가 제공하는 특수한 사용자 정의 클래스 로더입니다. 프로그래머가 로더를 지정하지 않으면 기본적으로 사용자 클래스가 로드됩니다. 시스템 클래스 로더는 ClassLoader.getSystemClassLoader() 메소드를 통해 얻을 수 있습니다.



예제 1, 사용 중인 JVM의 ClassLoader 테스트

/*LoaderSample1.java*/

public class LoaderSample1 {
public static void main (String[] args) {
클래스 c;
ClassLoader cl; cl = ClassLoader.getSystemClassLoader();
System.out.PRintln(cl) while (cl != null) {
cl = cl.getParent();
System.out.println(cl);
}
try {
c = Class.forName("java.lang.Object");
cl = c.getClassLoader();
System.out.println("java.lang.Object의 로더는 " + cl);
c = Class.forName("LoaderSample1");
cl = c .getClassLoader();
System.out.println("LoaderSample1의 로더는 " + cl);
} catch(예외 e) {
e.printStackTrace();
}
}
}

위 내용은 Java 클래스 로더 및 네임스페이스 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.