为了从类工厂中获取到自定义的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();

解决方案 »

  1.   

    --从类工厂中获取到自定义的MyClass类型的类工厂类有问题,把工厂类贴出来看看
      

  2.   


    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);
    }
      

  3.   

    这里不能简单的将MyClass放到HashMap里去,只能放Class
    因为要放到HashMap里的类的类型各不一样,无法统一,只能将这些类的Class对象放进去,故导致了错误的产生,但我不知道要怎么修改才能将Class转化为自定义类类型
      

  4.   

    既然得到的是Class,那你用newInstance()获取该类的实例不就行了?
      

  5.   

    哇塞 就这么解决了 我都不知道可以newInstance() 这就是经验的差距啊 今天又积累到了一点