동일한 클래스를로드하는 ClassLoader가 두 개 있습니다. 그래서 분명히 이들은 서로에게 던져 넣을 수 없습니다. 하지만 다른 ClassLoader에서 생성 된 객체에 액세스해야합니다.ClassLoader 문제로 인한 ClassCastException 솔루션
클래스 로더에 액세스 할 수 있습니다. 다른 클래스의 객체를 어떻게 사용할 수 있습니까? 현재 ClassLoader와 일치하도록 객체를 캐스팅 할 필요가 없습니다.
하지만 문제는 반환 된 개체의 형식이 Object
입니다. 그래서, 나는 몇몇 객체에 접근하기 위해 객체를 캐스팅해야합니다. 어떻게해야합니까? 다음과 같은 일반적인 캐스트는 이미 알고있는 ClassCastException을 발생시킵니다.
Mojo mojo = (Mojo) descriptor.getMojo();
descriptor#getMojo()
유형 Mojo
의 객체를 반환하지만 방법은 Object
를 반환합니다. 어떻게 할 수 있니?
추가 정보가 필요한 경우 알려주십시오.
클래스 로딩에 대한 모든 이론을 읽었지만 이에 대한 적절한 해결책을 지정한 사람은 없습니다.
, 당신이 할 경우 발생하는 :
는 바이트 배열에서 읽기'객체 descriptor.getMojo() = O를; System.out.println (o.getClass);'두 개의 다른 클래스 로더? – Bringer128여기서 가장 중요한 질문은 다음과 같습니다. * 실제로 * 여기 * 달성하려고 노력하고 있습니까? 이것은 학문적 인 운동입니까, 아니면이 상황을 뒷받침하는 실제 사용 사례입니까? –
@ Bringer128 동일한 클래스 이름 package.Mojo를 반환합니다. getClass() 및 #cast (Object o) 메서드를 통해 캐스팅을 수행 할 수 있는지 여부를 생각하고 있었습니까? – ravana