100分一个基础问题,快来抢风啊

liulangxin 2006-10-31 10:01:49
下面是我的一个类,用来判断是否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似乎也不行
那位给我详细讲一下,谢谢
...全文
276 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
liulangxin 2006-10-31
  • 打赏
  • 举报
回复
pretenderxzz(伪装者)没看贴
pretenderxzz 2006-10-31
  • 打赏
  • 举报
回复
if(clazz.getClass().isAssignableFrom(org.apache.struts.action.DispatchAction.class.getClass()))

这样就可以了
liulangxin 2006-10-31
  • 打赏
  • 举报
回复
不过对于class的在内存中能比较,还不是很了解,难道class也类似与基本类型?我不明白为什么能用equals
liulangxin 2006-10-31
  • 打赏
  • 举报
回复
我可能搞错了,谢了
liulangxin 2006-10-31
  • 打赏
  • 举报
回复
哈哈,你试试看,我用过org.apache.struts.action.DispatchAction.class.isAssignableFrom(clazz);好像还是不行
killme2008 2006-10-31
  • 打赏
  • 举报
回复
自己再读下方法说明,你理解错了
呵呵,我过去倒是直接用equals判断
killme2008 2006-10-31
  • 打赏
  • 举报
回复
isAssignableFrom(),你的用法错了,颠倒了
org.apache.struts.action.DispatchAction.class.isAssignableFrom(clazz);
zghmu007 2006-10-31
  • 打赏
  • 举报
回复
clazz.isAssignableFrom()判定此 Class 对象所表示的类或接口与指定的 Class 参数所表示的类或接口是否相同,或是否是其超类或超接口。你把clazz.isAssignableFrom(org.apache.struts.action.DispatchAction.class)改为clazz.isAssignableFrom(org.apache.struts.action.DispatchAction)试试
killme2008 2006-10-31
  • 打赏
  • 举报
回复
sorry
我写错,应该是
clazz.getSuperclass().equals(org.apache.struts.action.DispatchAction.class)
liulangxin 2006-10-31
  • 打赏
  • 举报
回复
另外,type因该是Dispatch的一个子类
liulangxin 2006-10-31
  • 打赏
  • 举报
回复
clazz.equals(org.apache.struts.action.DispatchAction.class)不是很理解,难道两个在内存总的引用相同吗?
buyaowen 2006-10-31
  • 打赏
  • 举报
回复
mark
wanguanghai 2006-10-31
  • 打赏
  • 举报
回复
学习ing 帮顶!!
liulangxin 2006-10-31
  • 打赏
  • 举报
回复
isAssignableFrom()到底怎么解呢?从他的说明上我认为可行啊
killme2008 2006-10-31
  • 打赏
  • 举报
回复
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是否相同就可以了
jabeginner 2006-10-31
  • 打赏
  • 举报
回复
lz啊,clazz不是一个类啊,怎么能用class呢?

62,614

社区成员

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

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