더북(TheBook)

ClassLoader.loadClass 메서드는 정적 초기화 블록을 실행하지 않으므로 사용하지 말자.


Note ≣

URLClassLoader는 파일 시스템에서 클래스를 로드한다. 다른 곳에서 클래스를 로드하려면 독자적으로 클래스 로더를 구현해야 한다. 꼭 구현해야 하는 메서드는 findClass 메서드 하나다.


public class MyClassLoader extends ClassLoader {

    ...

    @Override public Class<?> findClass(String name)

            throws ClassNotFoundException {

        byte[ ] bytes = 클래스 파일의 바이트들

        return defineClass(name, bytes, 0, bytes.length);

    }

}


클래스를 컴파일해서 메모리에 저장하고 로드하는 예제는 14장 컴파일링과 스크립팅을 참고하자.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.