ClassLoader 클래스

정의

클래스 로더는 클래스 로드를 담당하는 개체입니다.

[Android.Runtime.Register("java/lang/ClassLoader", DoNotGenerateAcw=true)]
public abstract class ClassLoader : Java.Lang.Object
[<Android.Runtime.Register("java/lang/ClassLoader", DoNotGenerateAcw=true)>]
type ClassLoader = class
    inherit Object
상속
ClassLoader
파생
특성

설명

클래스 로더는 클래스 로드를 담당하는 개체입니다. 클래스 ClassLoader 는 추상 클래스입니다. 클래스의 이진 이름이 지정된 경우 클래스 로더는 클래스에 대한 정의를 구성하는 데이터를 찾거나 생성하려고 시도해야 합니다. 일반적인 전략은 이름을 파일 이름으로 변환한 다음 파일 시스템에서 해당 이름의 "클래스 파일"을 읽는 것입니다.

모든 Class <tt>Class</tt> 개체에는 Class#getClassLoader() reference 정의된 에 대한 ClassLoader 가 포함됩니다.

Class 배열 클래스에 대한 개체는 클래스 로더에 의해 생성되지 않지만 Java 런타임에 필요한 대로 자동으로 만들어집니다. 에서 반환 Class#getClassLoader() 된 배열 클래스의 클래스 로더는 해당 요소 형식의 클래스 로더와 동일합니다. 요소 형식이 기본 형식이면 배열 클래스에 클래스 로더가 없습니다.

애플리케이션은 Java 가상 머신이 클래스를 동적으로 로드하는 방식을 확장하기 위해 의 ClassLoader 서브클래스를 구현합니다.

일반적으로 클래스 로더를 보안 관리자가 보안 도메인을 나타내는 데 사용할 수 있습니다.

클래스는 ClassLoader 위임 모델을 사용하여 클래스 및 리소스를 검색합니다. 의 ClassLoader 각 instance 연결된 부모 클래스 로더가 있습니다. 클래스 또는 리소스 ClassLoader 를 찾도록 요청되면 instance 클래스 또는 리소스 자체를 찾기 전에 클래스 또는 리소스에 대한 검색을 부모 클래스 로더에 위임합니다. "부트스트랩 클래스 로더"라고 하는 가상 머신의 기본 제공 클래스 로더는 자체에 부모가 없지만 instance 부모 ClassLoader 역할을 할 수 있습니다.

클래스의 동시 로드를 지원하는 클래스 로더는 em 병렬 가능</em> 클래스 로더라고 <하며 메서드를 호출 #registerAsParallelCapable <tt>ClassLoader.registerAsParallelCapable</tt> 하여 클래스 초기화 시간에 자신을 등록해야>합니다. 클래스는 ClassLoader 기본적으로 병렬로 등록됩니다. 그러나 해당 서브클래스는 병렬로 사용할 수 있는 경우에도 자신을 등록해야 합니다. <br> 위임 모델이 엄격하게 계층적이지 않은 환경에서는 클래스 로더를 병렬로 수행할 수 있어야 합니다. 그렇지 않으면 클래스 로드 프로세스 동안 로더 잠금이 유지되므로 클래스 로드가 교착 상태가 발생할 수 있습니다(메서드 참조 #loadClass <tt>loadClass</tt> ).

일반적으로 Java 가상 머신은 플랫폼 종속 방식으로 로컬 파일 시스템에서 클래스를 로드합니다. 예를 들어 UNIX 시스템에서 가상 머신은 환경 변수로 정의된 디렉터리에서 클래스를 CLASSPATH 로드합니다.

그러나 일부 클래스는 파일에서 시작되지 않을 수 있습니다. 네트워크와 같은 다른 원본에서 시작되거나 애플리케이션에서 생성될 수 있습니다. 메서드 #defineClass(String, byte[], int, int) <tt>defineClass</tt> 는 바이트 배열을 클래스Class의 instance 변환합니다. 이 새로 정의된 클래스의 인스턴스는 를 사용하여 Class#newInstance <tt>Class.newInstance</tt>만들 수 있습니다.

클래스 로더에서 만든 개체의 메서드 및 생성자는 다른 클래스를 참조할 수 있습니다. 참조된 클래스를 확인하기 위해 Java 가상 머신은 원래 클래스를 #loadClass <tt>loadClass</tt> 만든 클래스 로더의 메서드를 호출합니다.

예를 들어 애플리케이션은 서버에서 클래스 파일을 다운로드하는 네트워크 클래스 로더를 만들 수 있습니다. 샘플 코드는 다음과 같을 수 있습니다.

<인용구>

ClassLoader loader&nbsp;= new NetworkClassLoader(host,&nbsp;port);
              Object main&nbsp;= loader.loadClass("Main", true).newInstance();
                  &nbsp;.&nbsp;.&nbsp;.

</인용구>

네트워크 클래스 로더 하위 클래스는 메서드 #findClass <tt>findClass</tt>loadClassData 를 정의하고 네트워크에서 클래스를 로드해야 합니다. 클래스를 구성하는 바이트를 다운로드한 후에는 메서드 #defineClass <tt>defineClass</tt> 를 사용하여 클래스 instance 만들어야 합니다. 샘플 구현은 다음과 같습니다.

<인용구>

class NetworkClassLoader extends ClassLoader {
                    String host;
                    int port;

                    public Class findClass(String name) {
                        byte[] b = loadClassData(name);
                        return defineClass(name, b, 0, b.length);
                    }

                    private byte[] loadClassData(String name) {
                        // load the class data from the connection
                        &nbsp;.&nbsp;.&nbsp;.
                    }
                }

</인용구>

<h3> "name">Binary names</h3>

의 메서드 ClassLoaderString 매개 변수로 제공된 모든 클래스 이름은 java&trade에서 정의한 <>이진 이름이어야 합니다. 언어 사양</인용>.

유효한 클래스 이름의 예로는 blockquote가 있습니다 <.>

"java.lang.String"
              "javax.swing.JSpinner$DefaultEditor"
              "java.security.KeyStore$Builder$FileBuilder$1"
              "java.net.URLClassLoader$3$1"

</인용구>

1.0에 추가되었습니다.

에 대한 Java 설명서입니다 java.lang.ClassLoader.

이 페이지의 일부는 만들고 공유하며 에 설명된 용어에 따라 사용되는 작업을 기반으로 수정됩니다.

생성자

ClassLoader()

메서드 #getSystemClassLoader() <tt>getSystemClassLoader()</tt> 에서 반환된 를 부모 클래스 로더로 사용하여 ClassLoader 새 클래스 로더를 만듭니다.

ClassLoader(ClassLoader)

위임에 대해 지정된 부모 클래스 로더를 사용하여 새 클래스 로더를 만듭니다.

ClassLoader(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

속성

Class

Object의 런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
Handle

기본 Android instance 대한 핸들입니다.

(다음에서 상속됨 Object)
JniIdentityHashCode

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
JniPeerMembers

클래스 로더는 클래스 로드를 담당하는 개체입니다.

Parent

위임에 대한 부모 클래스 로더를 반환합니다.

PeerReference

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
SystemClassLoader

위임에 대한 시스템 클래스 로더를 반환합니다.

ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

메서드

ClearAssertionStatus()

이 클래스 로더에 대한 기본 어설션 상태 로 false 설정하고 클래스 로더와 연결된 모든 패키지 기본값 또는 클래스 어설션 상태 설정을 삭제합니다.

Clone()

이 개체의 복사본을 만들고 반환합니다.

(다음에서 상속됨 Object)
DefineClass(Byte[], Int32, Int32)
사용되지 않음.

바이트 배열을 클래스 Class의 instance 변환합니다.

DefineClass(String, Byte[], Int32, Int32)

바이트 배열을 클래스 Class의 instance 변환합니다.

DefineClass(String, Byte[], Int32, Int32, ProtectionDomain)

바이트 배열을 클래스 의 Classinstance 변환하고 선택적 ProtectionDomain을 사용합니다.

DefineClass(String, ByteBuffer, ProtectionDomain)

java.nio.ByteBuffer <tt>ByteBuffer</tt> 를 클래스 의 Classinstance 변환하고 선택적 ProtectionDomain을 사용합니다.

DefinePackage(String, String, String, String, String, String, String, URL)

ClassLoader에서 이름으로 패키지를 정의합니다.

Dispose()

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
Dispose(Boolean)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
FindClass(String)

지정된 이진 이름을 가진 클래스를 찾습니다.

FindLibrary(String)

네이티브 라이브러리의 절대 경로 이름을 반환합니다.

FindLoadedClass(String)

이 로더가 해당 이진 이름을 가진 클래스의 시작 로더로 Java 가상 머신에 의해 기록된 경우 지정된 이진 이름의 클래스를 반환합니다.

FindResource(String)

지정된 이름의 리소스를 찾습니다.

FindResources(String)

지정된 이름을 가진 모든 리소스를 나타내는 개체의 java.net.URL <tt>URL</tt> 열거형을 반환합니다.

FindSystemClass(String)

지정된 이진 이름이 있는 클래스를 찾아 필요한 경우 로드합니다.

GetHashCode()

개체의 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
GetPackage(String)

Package 이 클래스 로더 또는 해당 상위 항목에서 정의한 를 반환합니다.

GetPackages()

이 클래스 로더 및 해당 상위 항목에 의해 정의된 모든 Packages 를 반환합니다.

GetResource(String)

지정된 이름의 리소스를 찾습니다.

GetResourceAsStream(String)

지정된 리소스를 읽기 위한 입력 스트림을 반환합니다.

GetResources(String)

지정된 이름의 모든 리소스를 찾습니다.

GetSystemResource(String)

클래스를 로드하는 데 사용되는 검색 경로에서 지정된 이름의 리소스를 찾습니다.

GetSystemResourceAsStream(String)

클래스를 로드하는 데 사용되는 검색 경로에서 지정된 이름의 리소스인 읽기용으로 열립니다.

GetSystemResources(String)

클래스를 로드하는 데 사용되는 검색 경로에서 지정된 이름의 모든 리소스를 찾습니다.

JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
LoadClass(String)

지정된 이진 이름으로 클래스를 로드합니다.

LoadClass(String, Boolean)

지정된 이진 이름으로 클래스를 로드합니다.

LoadClassAsync(String)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

LoadClassAsync(String, Boolean)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
RegisterAsParallelCapable()

호출자를 병렬 가능으로 등록합니다.

ResolveClass(Class)

지정된 클래스를 연결합니다.

SetClassAssertionStatus(String, Boolean)

이 클래스 로더의 명명된 최상위 클래스 및 해당 클래스에 포함된 중첩 클래스에 대해 원하는 어설션 상태 설정합니다.

SetDefaultAssertionStatus(Boolean)

이 클래스 로더에 대한 기본 어설션 상태 설정합니다.

SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
SetPackageAssertionStatus(String, Boolean)

명명된 패키지에 대한 패키지 기본 어설션 상태 설정합니다.

SetSigners(Class, Object[])

클래스의 서명자를 설정합니다.

ToArray<T>()

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
Wait()

현재 스레드가 각성될 때까지 대기하도록 합니다. 일반적으로 <알림을<> 받>거나<<> 중단/em>합니다.

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 깨어날 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 중단</>em>>을 받거나 <일정량의 실시간이 경과할 때까지 대기합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IJavaPeerable.Disposed()

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
IJavaPeerable.DisposeUnlessReferenced()

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

GetJniTypeName(IJavaPeerable)

클래스 로더는 클래스 로드를 담당하는 개체입니다.

적용 대상