检查类是否间接继承了另一种类

时间:2013-05-29 14:52:05

标签: java reflection checkstyle

我正在编写一个自定义检查以查看某些类是否符合我们的体系结构,其中一条规则规定如果一个类的名称具有某个前缀,则它必须直接或间接地继承某种类型的servlet。 / p>


可用的检查不包括这种情况,并且间接继承被证明是一个测试的挑战,因为我找不到一种方法来获得第一个继承类的Ast树,所以这样的模式:

  • dummyClass1扩展dumDummy
  • dumDummy扩展了realyImportantClass

未经检查。问题是:

  1. 如何访问继承类的Ast树?
  2. 第一个想法是将.class放到第一个继承的类并检查它,可以吗?
  3. Checkstyle可以从.class文件中获取Ast树吗?
  4. 提前致谢,如果问题不清楚,请提醒我,我很乐意提供尽可能多的信息

1 个答案:

答案 0 :(得分:2)

您可以执行以下操作来检查:

Class<?> dummyClass = DummyClass1.class;
Class<?> reallyImportantClass = ReallyImportantClass.class;
if(reallyImportantClass.isAssignableFrom(dummyClass)){
  return true;
}else{
  return false;
}

请参阅:   http://docs.oracle.com/javase/6/docs/api/java/lang/Class.html#isAssignableFrom(java.lang.Class)