要如何才能实现将Class类型转化为自定义类类型?

qq1212 2009-05-16 11:43:23
为了从类工厂中获取到自定义的MyClass类型的类,传入参数MyClass.class,然后强制转化为MyClass,再调用MyClass里的方法实现业务。

但是现在跑的时候报错
java.lang.ClassCastException: java.lang.Class cannot be cast to demo.MyClass

调试发现类工厂中取出来的为Class类型,所以不能转化为MyClass类型,那要怎样才能实现以上功能呢?我想要从MyClassFactory中就提取出MyClass类型,而不是Class,如何做到?


MyClass myclass = (MyClass) MyClassFactory.getClass(MyClass.class);
myclass.doBusiness();
...全文
221 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
爱摸鱼de老邪 2009-05-17
  • 打赏
  • 举报
回复
既然得到的是Class,那你用newInstance()获取该类的实例不就行了?
xnjnmn 2009-05-17
  • 打赏
  • 举报
回复
--从类工厂中获取到自定义的MyClass类型的类

工厂类有问题,把工厂类贴出来看看
qq1212 2009-05-17
  • 打赏
  • 举报
回复
哇塞 就这么解决了 我都不知道可以newInstance() 这就是经验的差距啊 今天又积累到了一点
qq1212 2009-05-17
  • 打赏
  • 举报
回复
这里不能简单的将MyClass放到HashMap里去,只能放Class
因为要放到HashMap里的类的类型各不一样,无法统一,只能将这些类的Class对象放进去,故导致了错误的产生,但我不知道要怎么修改才能将Class转化为自定义类类型
qq1212 2009-05-17
  • 打赏
  • 举报
回复

public static Object getClass(Class clazz) throws Exception {
HashMap map = new HashMap();

// 实现将抽象类与实现类想关联,便于获取
Class iface = Class.forName(抽象类名);
Class impl = Class.forName(实现类名);
map.put(iface, impl);

return map.get(clazz);
}

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧