【发布时间】:2018-12-26 02:03:37
【问题描述】:
我正在尝试使用反射访问方法,其中一个参数是回调。回调类型是不同类类型的通用接口。这些类是@SystemApi,可以通过反射访问。 Here 是我正在使用上述说法的班级。
下面是我的示例代码:
String sClassName = "android.telephony.euicc.EuiccCardManager";
Class classToInvestigate = Class.forName(sClassName);
Class interfaceclass = classToInvestigate.getClasses()[0]; //android.telephony.euicc.EuiccCardManager.ResultCallback
Method getallprofiles = classToInvestigate.getDeclaredMethod("requestAllProfiles", String.class,Executor.class, interfaceclass);
getallprofiles.invoke(null,getEid(), AsyncTask.THREAD_POOL_EXECUTOR,null);
在上面的 invoke 签名作为最后一个参数中,我需要传递使用反射创建的回调,它与下面的回调示例等效或相似。
ResultCallback<EuiccProfileInfo[]> callback =
new ResultCallback<EuiccProfileInfo[]>() {
@Override
public void onComplete(int resultCode, EuiccProfileInfo[] result) { }
};
- 上面的ResultCallback接口可以在我上面提供的同一个类链接和上面
interfaceclass字段的同一个实例中找到。 - EuiccProfileInfo 是另一个需要从反射访问的类,因为它是
@SystemApi
我已经失败/卡住了用反射翻译上述回调逻辑。任何人都可以帮助我吗?
【问题讨论】:
-
@GennadiiSaprykin 是的,但在我的情况下,接口本身我需要进行反射。
-
我的回答有帮助吗?还是你还需要这里的东西?
标签: java android reflection android-reflection