2010-03-18 2 views
2

이미 JVM에로드 된 클래스가 있음을 의미합니다. 어떤 다른 방법에서 우리는 무의식적으로 같은 클래스를로드하려고합니다. 그래서이 상황에서 어떤 일이 발생합니까? 즉 이미로드 된 오류 또는 예외가있을 것입니다. 그렇지 않다면 몇 가지 추가 기능을 사용하여 클래스를 수정하고 필요할 때마다 핫 배포가 가능할 수 있습니다.이미로드 된 클래스를 다시로드하면 어떻게됩니까?

답변

5

아무런 변화가 없습니다. VM는 먼저 클래스가로드되었는지 확인한 후로드합니다. 그렇지 않으면 이미로드 된 클래스를 반환합니다. ClassLoader.loadClass(..)에서

:.

// First, check if the class has already been loaded 
Class c = findLoadedClass(name); 
if (c == null) { 
    ... 
} 

(당신은 클래스 로딩에 대한 광범위한 세부 사항에 this article을 확인할 수 있습니다이 직접 질문에) 전체 (관련되지는 않지만, 그것은 질문에 대한 답변의 좋은 소스입니다 like yours)

0

로드 된 상태에서 클래스를 다시 사용하려는 경우 싱글 톤 클래스 패턴을 확인해야합니다. 같은 클래스를 다시로드하면 클래스의 인스턴스가 여러 개있을 것이므로 오류는 발생하지 않습니다.

0

클래스 로더 당 하나의 클래스 만있을 수 있으므로 이론적으로 불가능합니다. static initializer 블록에 S.o.p 문을 넣는 것을 호출하여 실제로 이것을 테스트 할 수 있습니다. 이 블록은 클래스가로드 될 때 한 번만 실행됩니다. 주석 [주어진 이름]

+0

에 따라 수정 주어진 정규화 된 이름의

편집

한 클래스? –

관련 문제