![](/img/trans.png)
[英]if (a != null && a instanceof A) … or if (a instanceof A)
[英]Checkstyle instanceOf
是否可以使用checkstyle
检测实例类型? 例如,我有像这样的代码块
class A {
...
private void method test() {
....
throw new MyCustomException("Some message");
}
}
在这种情况下,我想获得 MyCustomException 的真实实例。 我知道我们可以在自定义插件中使用TokenTypes.LITERAL_NEW
,但在这种情况下,我只能获取异常的名称,而不能获取实例类型(我没有此异常类型的地址)。
由于您想要的是异常的类路径,因此您必须模拟 Java 如何从源代码确定类路径。
这需要您检查导入和包。 您将无法使用 Checkstyle 完全确定这一点,因为它只查看单个文件,而 Java 实际上查看多个文件夹位置,但您可以非常接近。
首先查找具有该确切类名的导入。 如果没有导入,则选择是来自java.lang
包还是正在检查的文件的当前包。 您应该为要自动识别的任何java.lang
异常(如果有)构建一个列表。 该列表中的任何其他内容都将默认为文件的包声明。
如果您希望查看示例,Checkstyle 中有一些检查可以实现此逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.