1.loadClass, 클래스 로딩 요청이 오면 먼저 캐시에서 클래스 객체를 찾습니다.
있는 경우 직접 반환됩니다. 그렇지 않은 경우 이러한 유형의 로딩의 상위 로더에 전달됩니다. 로드할 상위 항목이 없으면 최상위 부트 로더에 의해 로드됩니다. 여전히 찾을 수 없으면 findClass()를 사용하여 로드하세요.
2. FindClass
클래스 바이트코드를 이름이나 위치별로 로드한 다음 필요하면 DefineClass를 사용하세요. ClassLoader를 사용자 정의하려면 이 메소드를 다시 작성해야 합니다.
3.defineClass
defineClass() 메소드는 바이트 스트림을 JVM에서 인식할 수 있는 Class 객체로 구문 분석하는 것입니다(이 메소드의 논리는 ClassLoader에서 구현되었습니다). 클래스 파일을 통해 객체를 생성하는 경우, 클래스 객체는 다른 메소드를 통해서도 인스턴스화할 수 있습니다. 예를 들어 네트워크를 통해 바이트코드 클래스를 수신한 다음 이를 바이트 스트림으로 변환하여 해당 Class 객체를 생성하는 경우가 일반적입니다. DefineClass() 메소드는 일반적으로 함께 사용됩니다. 일반적으로 클래스 로더를 커스터마이징할 때 클래스 로더의 findClass() 메서드를 직접 재정의하고 로드할 클래스의 바이트코드를 얻은 후 이를 스트림으로 변환합니다. 그런 다음 DefineClass() 메소드를 호출하여 클래스의 Class 객체를 생성합니다. 간단히 말하면 클래스 파일을 Class 객체로 변환하는 것입니다.
4.resolveClassClass 객체를 사용하여 생성한 후 동시에 해결도 가능합니다.
앞서 링크 단계에서는 주로 바이트코드 검증, 메모리 할당, 클래스 변수 설정, 바이트코드 파일의 심볼 참조를 직접 참조로 변환한다고 말씀드렸습니다.
Java의 기본 데이터 유형은 다음과 같이 구분됩니다.
1 정수 유형은 정수의 데이터 유형을 나타내는 데 사용됩니다.
2. 부동 소수점 유형, 소수를 나타내는 데 사용되는 데이터 유형입니다.
3. 문자 유형의 키워드는 "char"입니다.
4. 불리언형은 논리값을 표현하는 기본 데이터형입니다.
위 내용은 Java 클래스 로더를 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!