最近做一个项目,用Weblogic 8.1部署的,所以JDK只支持到1.4。 
    我在实际的项目过程中需要完成以下目标,已知一个父类A,它有若干个子类B,C,D等,在程序里我们可以先得到父类A的实例对象a,然后需要将这个父类的对象强制转换成它的某一个子类的实例,我的问题是,在事先不知道需要转换的是哪个子类时,如何通过从外部传入的类名("B","C",或者"D")和A的实例对象a强制转换成子类对象。 
    我知道其实这个问题在JDK1.5里面的Class类中有个cast方法专门可以完成这个工作的。但问题是Weblogic 8.1不支持JDK1.5,请问JDK1.5以前的JDK版本中有没有什么方法能够完成该操作?

解决方案 »

  1.   

    我没明白LZ的意思
    比如说这样一个函数 
    cs(A a, String className){
    ...
    //转换
    }
    现在是想通过className来把a转换成相应的实例,是这个意思吗?首先,我想请问,即使是jdk1.5,你用case,你又是怎么做到的?
    是不是
    if (className.equals(B.class.getName())) {
        B b = B.class.cast(a);
    } else if (...) {
        ...
    }
    如果不是这样,你是怎么判断cast返回的类型的?
    也就是 ? x = a.getClass().cast(a); //这个?你是怎么知道的?如果是这样,那么直接强行转换不就行了吗
    if (className.equals(B.class.getName())) {
        B b = (B)a; //这样就行
    } else if (...) {
        ...
    }或者根本不用className
    if (a instanceof B) {
        B b = (B)a; //这样就行
    } else if (...) {
        ...
    }不知道LZ的意思是不是这样,最好把问题描述清楚一些。