java 接口转化为对象_java-通过反射创建对象时将对象强制转换为接口

我正在尝试在Android中进行一些操作,并且在尝试将另一个.apk中的类强制转换到我的界面时遇到了困扰.我在实现该接口的其他.apks中具有接口和各种类.我使用PackageManager的查询方法查找其他类,并使用Application#createPackageContext()获取该上下文的类加载器.然后,我加载该类,创建一个新实例,然后尝试将其强制转换为我确实可以实现的接口.

当我尝试强制转换时,它将引发类强制转换异常.我尝试了各种方法,例如先加载接口,使用Class#asSubclass等,但这些方法均无效. Class#getInterfaces()显示接口已实现.我的代码如下:

PackageManager pm = getPackageManager();

List lr = pm.queryIntentServices(new Intent("com.example.some.action"),0);

ArrayList list = new ArrayList();

for (ResolveInfo r : lr) {

try {

Context c = getApplication().createPackageContext(r.serviceInfo.packageName,Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);

ClassLoader cl = c.getClassLoader();

String className = r.serviceInfo.name;

if (className != null) {

try {

Class> cls = cl.loadClass(className);

Object o = cls.newInstance();

if (o instanceof MyInterface) { //fails

list.add((MyInterface) o);

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} // some exceptions removed for readability

}

} catch (NameNotFoundException e1) {

e1.printStackTrace();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值