没有异常处理的 Class.forName 调用的等价物
An equivalent for a Class.forName call without exception handling
我想知道方法 Class.forName(className)
上是否有 "a method-wrapper",如果已检查的 ClassNotFoundException
发生,它会抛出未经检查的异常。
我的问题是在 lambda 体内处理这些类型的异常。看起来太邋遢了:
definition -> {
new Thread(() -> {
try {
context.getBean(Class.forName(definition.getBeanClassName()));
...
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}).start();
});
还是我必须自己写?
提前致谢。
首先,注意风格。如果一个 lambda 不止一个语句,你应该认真考虑让它成为一个独立的方法。从可重用性、可维护性和可调试性的角度来看,这确实很有帮助。
为了回答您的问题,不,核心 Java 的一部分不存在这样的包装器。编写自己的(在命名方法中)应该不会那么痛苦。
Spring 知道 org.springframework.util.ClassUtils.resolveClassName
方法,它与 Class.forName
等效,但如果找不到 class 则抛出 IllegalArgumentException
。
我想知道方法 Class.forName(className)
上是否有 "a method-wrapper",如果已检查的 ClassNotFoundException
发生,它会抛出未经检查的异常。
我的问题是在 lambda 体内处理这些类型的异常。看起来太邋遢了:
definition -> {
new Thread(() -> {
try {
context.getBean(Class.forName(definition.getBeanClassName()));
...
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}).start();
});
还是我必须自己写?
提前致谢。
首先,注意风格。如果一个 lambda 不止一个语句,你应该认真考虑让它成为一个独立的方法。从可重用性、可维护性和可调试性的角度来看,这确实很有帮助。
为了回答您的问题,不,核心 Java 的一部分不存在这样的包装器。编写自己的(在命名方法中)应该不会那么痛苦。
Spring 知道 org.springframework.util.ClassUtils.resolveClassName
方法,它与 Class.forName
等效,但如果找不到 class 则抛出 IllegalArgumentException
。