내 작업 공간에 3 개의 프로젝트가 있습니다. A, B, C는 Android lib 프로젝트입니다.리플렉션을 통해 검색된 Class 객체를 인터페이스로 전송할 수 있습니까?
- 는 B가이 인터페이스를 구현
I
Btest
라는 클래스가 포함Atest
- 라는 활동을 포함한다.
- C는
I
인터페이스를 포함합니다.
Android 기기에 A와 B가 모두 설치되어 있습니다. 이제 여기
Context otherContext = createPackageContext("com.package.b",
CONTEXT_INCLUDE_CODE | CONTEXT_IGNORE_SECURITY);
ClassLoader loader = otherContext.getClassLoader();
Class<?> btest = Class.forName("com.package.b.BTest", true, loader);
내 질문은 - A
실행 컨텍스트 내에서 I
에 btest 캐스팅 할 수있는 방법이있다 : Atest
런타임 동안 , 내가 다음 코드를 실행하는거야?
나는 많은 명백한 (그리고 그렇게 그리 명백한 몇 가지) 트릭을 시도했지만 아무런 성과가 없었다. 내가 할 수의 코스 등의 방법을 호출 btest의 방법과 인터페이스를 탐구 ..하지만 A와 B 모두
C.
lib 디렉토리 프로젝트에 동일한I
인터페이스를 참조하지만 나는 단순히,
I
으로 캐스팅 할 수 없습니다 미리 감사드립니다!
P.
오브젝트에 들어 가지 않고 인터페이스에 캐스팅 했으므로이 경우에는 ClassLoader
이 원인이 아닙니다.
간단하고 명확합니다. "invoke"를 통해 객체 메쏘드에 접근하는 것을 피할 수 있습니까? 리플렉션을 통해 해당 개체에 액세스해야합니다 ... – avimak