com.lbs.leaf.validate.ValidateErrMsg.class.isAssignableFrom(Class.forName("UploadDirDTO"))
-----------------------------------
public abstract interface com.lbs.leaf.validate.ValidateErrMsg extends java.lang.Object implements com.lbs.commons.IPublished, java.io.Serializable {......}
--------------------------------------
import com.lbs.commons.IPublished;public class UploadDirDTO implements java.io.Serializable, IPublished {...}
-----------------------------------------------
上面是类和接口的定义,
但我用com.lbs.leaf.validate.ValidateErrMsg.class.isAssignableFrom(Class.forName("UploadDirDTO"))比较出来的竞然是false不知道错在哪里了
-----------------------------------
public abstract interface com.lbs.leaf.validate.ValidateErrMsg extends java.lang.Object implements com.lbs.commons.IPublished, java.io.Serializable {......}
--------------------------------------
import com.lbs.commons.IPublished;public class UploadDirDTO implements java.io.Serializable, IPublished {...}
-----------------------------------------------
上面是类和接口的定义,
但我用com.lbs.leaf.validate.ValidateErrMsg.class.isAssignableFrom(Class.forName("UploadDirDTO"))比较出来的竞然是false不知道错在哪里了
SuperClass.class.isAssignableFrom(SubClass.class)UploadDirDTO 并不是 ValidateErrMsg 的子类呀。
同意五楼,isInstanceof需要一个实例!
如果要判断二者是否继承或实现同一个超类或接口,可以比较它们的超类和接口看看是否有重合
List<Class<?>> cList1 = Arrays.asList(ValidateErrMsg.class.getInterfaces());
cList1.add(ValidateErrMsg.class.getSuperclass());
List<Class<?>> cList2 = Arrays.asList(UploadDirDTO.class.getInterfaces());
cList2.add(UploadDirDTO.class.getSuperclass());
cList1.retainAll(cList2);
if (cList.size > 0) {
System.out.println("二者有共同超类或接口");
for (Class<?> c : cList1) {
System.out.printf("%s ", c.getName());
}
}
ValidateErrMsg并不是UploadDirDTO的超类更不是UploadDirDTO的接口,当然返回false了