2011-03-14 1 views
2

나는이정적 최종의 여러 클래스 로더는

public static final Object foo = Xyz.generateFoo(); 

같은 정의가 그리고 내 응용 프로그램은 여러 개의 사용자 정의 클래스 로더를 사용하고 있습니다. 모든 수업에 foo의 동일한 인스턴스가 표시되도록하려면 어떻게해야합니까?

외부 저장소 (예 : System.Properties 또는 파일)를 사용하지 않는 것이 좋습니다. 감사.

+0

파일에 날짜를 저장해도 foo의 동일한 인스턴스가 어떤 방식 으로든 보장되지 않습니다. 또한 클래스 로더는 일반적으로 트리 구조를 특징으로하며, 부모 클래스 로더에 의해로드 된 모든 것은 동일합니다. – bestsss

답변

4

공통 상위 클래스 로더가로드 한 클래스에 값에 대한 참조를 배치하십시오.

0

Xyz.generateFoo();의 결과가 항상 같거나 변수 public static final Object foo = Xyz.generateFoo();에 할당 된 후 원하는 곳에 동일한 인스턴스에 액세스하고 싶습니까?

1

일부 맞춤 클래스 로더가 (예 : webapp 클래스 로더처럼) "부모 클래스 로더 우선 검사"규칙을 위반하는 경우이를 보장 할 수있는 방법이 없습니다.

그렇지 않으면 Tom Hawtin이 제안한 것처럼 부모 클래스 로더가로드 한 클래스에 해당 필드를 배치 할 수 있습니다.