내부 수업
클래스 A {// inner1은 a가 초기화 된 후에 만 사용할 수 있습니다. 즉, 객체 A에 의해 호출됩니다. 클래스 내부 1 {int k = 0; // 정적 int j = 0; // a가로드 된 후, 내부 1이로드되지 않으므로이 정적 변수 j를 즉시 사용할 수없고 오류가 최종 int z = 0으로보고됩니다. /*static void say1 () {}*/void says2 () {}} // inner2는 정적 클래스 내부 2 {int k = 0; 정적 int j = 0; 최종 int z = 0; static void says1 () {} void says 2 () {}} // 내부 클래스 void c () 호출 c () {final in x = 0; // 최종 수정 후 새로운 a (). new a (); non-static inner class inner1, 클래스의 객체를 호출해야합니다. 새 a (). A.inner2.say1 (); new A.inner2 (). say2 (); // 비 정적 메소드 says2 ()는 클래스의 객체를 호출해야합니다. }} / * *이 방법에서 로컬 내부 클래스의 호출은 선언 후에 선언해야합니다. * 메소드의 실행 순서는 위에서 아래로 이며이 클래스 *는 로컬 변수와 동일합니다. 먼저 선언 한 다음 * / new Inner3 (). print ()를 사용해야합니다. }} 클래스 로더 java.lang.classloader
java.lang.classloader 클래스의 기본 책임은 지정된 클래스의 이름을 기반으로 해당 바이트 코드를 찾거나 생성 한 다음 이러한 바이트 코드, 즉 Java.lang.class 클래스의 인스턴스에서 Java 클래스를 정의하는 것입니다. 또한 ClassLoader는 이미지 파일 및 구성 파일과 같은 Java 응용 프로그램에서 필요한 리소스를로드 할 책임이 있습니다. 그러나이 기사는 로딩 클래스의 기능 만 설명합니다. 클래스로드에 대한 이러한 책임을 완료하기 위해 ClassLoader는 일련의 방법을 제공합니다.
getParent () 클래스 로더의 상위 클래스 로더를 반환합니다.
loadClass (문자열 이름) 이름 이름으로 클래스를로드하고 결과는 java.lang.class 클래스의 인스턴스입니다.
findClass (문자열 이름) 이름이라는 클래스를 찾으십시오. 결과는 java.lang.class 클래스의 인스턴스입니다.
findloadedClass (문자열 이름) 이름이 이름이 지정된로드 클래스를 찾으십시오. 결과는 java.lang.class 클래스의 인스턴스입니다.
DefineClass (문자열 이름, 바이트 [] b, int off, int len) 바이트 배열 b의 내용을 Java 클래스로 변환하고 결과는 java.lang.class 클래스의 인스턴스입니다. 이 방법은 최종적으로 선언됩니다.
ResolveClass (class <?> c) 지정된 Java 클래스를 연결합니다.
public class classloadertest 확장 클래스 로더 {public static void main (string [] args)은 보안 예고, nosuchmethodexception {// 루트 클래스 로더,로드 된 핵심 클래스 라이브러리 URL [] urls = sun.misc.launcher.getBootsTrapClassPath (). getUrls (); for (url u : urls) {system.out.println (u); } // 확장 클래스 로더,로드 된 시스템 속성 : java.ext.dirs system.err.println ( "Extension Classloader) 로더" + classloader.getSystemClassLoader ()); // inherited 관계가 아닌 경로 아래의 클래스. System.out.println (System.GetProperty ( "java.ext.dirs")); // 응용 프로그램 (시스템 응용 프로그램 클래스 로더) 클래스 로더,로드 시스템 환경 변수 경로 또는 클래스 경로 // 지정된 JAR 패키지 및 클래스 경로 시스템 .err.println ( "Application (System) 클래스 로더" + ClassLoader.getSystemClassLoader ()); // System.out.println (System.GetEnv ( "Path")); // System.out.println (System.Getenv ( "classPath")); }}