3

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


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

  • dummyClass1 扩展了 dumDummy
  • dumDummy 扩展了 realyImportantClass

不加检查。问题是:

  1. 如何访问继承类的 Ast 树?
  2. 第一个想法是让.class到第一个继承的类并检查它,可以做到吗?
  3. Checkstyle 可以从 .class 文件中获取 Ast 树吗?

提前谢谢,如果问题不清楚,请警告我,我很乐意提供尽可能多的信息

4

1 回答 1

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)

于 2013-05-29T15:05:42.080 回答