下面是我的一个类,用来判断是否A是B的子类
public boolean isMutipleAction(String type) {
    Class clazz = Class.forName(type);
    try
        if(clazz.isAssignableFrom(org.apache.struts.action.DispatchAction.class))
            return true;
    }
    catch(Exception ee) {
    }
    return false;
}但是无效,无论怎样得到都是false,
后来我换了一种做法就行了
Object clazz = Class.forName(type).newInstance();
clazz instanceof org.apache.struts.action.DispatchAction
就ok了
用class的isInstance似乎也不行
那位给我详细讲一下,谢谢

解决方案 »

  1.   

    lz啊,clazz不是一个类啊,怎么能用class呢?
      

  2.   

    public boolean isMutipleAction(String type) {
        Class clazz = Class.forName(type);
        try
            if(clazz.equals(org.apache.struts.action.DispatchAction.class))
                return true;
        }
        catch(Exception ee) {
        }
        return false;
    }
    equals判断class是否相同就可以了
      

  3.   

    isAssignableFrom()到底怎么解呢?从他的说明上我认为可行啊
      

  4.   

    clazz.equals(org.apache.struts.action.DispatchAction.class)不是很理解,难道两个在内存总的引用相同吗?
      

  5.   

    另外,type因该是Dispatch的一个子类
      

  6.   

    sorry
    我写错,应该是
    clazz.getSuperclass().equals(org.apache.struts.action.DispatchAction.class)
      

  7.   

    clazz.isAssignableFrom()判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。你把clazz.isAssignableFrom(org.apache.struts.action.DispatchAction.class)改为clazz.isAssignableFrom(org.apache.struts.action.DispatchAction)试试
      

  8.   

    isAssignableFrom(),你的用法错了,颠倒了
    org.apache.struts.action.DispatchAction.class.isAssignableFrom(clazz);
      

  9.   

    自己再读下方法说明,你理解错了
    呵呵,我过去倒是直接用equals判断
      

  10.   

    哈哈,你试试看,我用过org.apache.struts.action.DispatchAction.class.isAssignableFrom(clazz);好像还是不行
      

  11.   

    不过对于class的在内存中能比较,还不是很了解,难道class也类似与基本类型?我不明白为什么能用equals
      

  12.   

    if(clazz.getClass().isAssignableFrom(org.apache.struts.action.DispatchAction.class.getClass()))这样就可以了
      

  13.   

    pretenderxzz(伪装者)没看贴