不明白
要么用向上转型,要么用Class.forName(String className)来动态获取类型并生成实例

解决方案 »

  1.   

    if (hashtable.get(i) instanceof A)
      return (A)hashtable.get(i);
    else if (hashtable.get(i) instanceof B)
      return (B)hashtable.get(i);
    else if (hashtable.get(i) instanceof C)
      return (C)hashtable.get(i);
    else
      return null;
      

  2.   

    我说的Hashtable只是个例子。
    我实际在方法中要用的是
    A read = (A) Unmarshaller.unmarshal(A.class, reader);
    最后我要返回read对象。mnwind(晨风)说的好像能解决我的问题,但我不知道下一步要怎么
    “动态获取类型并生成实例”
      

  3.   

    有意思,我记得jvm规范上规定
    同一个类中,不能声明方法名,参数相同但返回类型不同的方法
    所以,你在方法声明当中,只能返回class A,class B ,class C的共同父类而当你根据返回值的具体类型作不同处理的时候,
    可以参照pleonheart(只睡六小时)的说法
    所谓“动态获取类型并生成实例”这个问题,有歧义
    你西方从什么地方获取类型呢?
    是一个实例,还是该类的名称(包括名称空间)还是该类相应的Class对象?
    对于第一种情形:
    o.getClass().newInstance()
    第二种情形
    Class.forName("pathOfTheClass.className").newInstance()
    第三种情形
    aClass.newInstance()
      

  4.   

    可以先声明一个父类,A B C 都从父类继承,最后return 父类句柄
      

  5.   

    问题已解决。使用返回相同的父类即可。
    但在A read = (A) Unmarshaller.unmarshal(A.class, reader);
    一句中的A.class需要传入子类的class才不出异常