猿问

在不使用instanceof的情况下获取异常是否为instanceof的复杂方法

我正在编写一个方法,如果异常是 的实例,该方法将返回 true *someClass*。但我无法导入其中一个类,因为它位于另一个模块中。我无法将该模块添加到项目中,所以我想,我无法使用instanceof。


我考虑创建一个Mapof Strings- 异常的类名并检查我的异常的类名是否在映射中,但我认为这会相当慢且难看。


方法如下:


public boolean checkExceptionClass(Throwable cause){

 return (cause instanceof firstException

         || cause instanceof secondException

         || cause instanceof iDontHaveThatClassException // can't do that

         || cause instanceof fourthException);

}

也许我在我眼皮子底下看不到解决这个问题的好办法。非常感谢任何想法和建议。


不负相思意
浏览 87回答 1
1回答

智慧大石

您可以尝试使用 .getClass() 和 getSimpleName(),例如:Integer integer = Integer.valueOf(1);if(integer.getClass().getSimpleName().equals("Integer") { return true}所以基本上你可以使用你无法导入的类的名称,值得一提的是,硬编码不是最佳实践
随时随地看视频慕课网APP

相关分类

Java
我要回答