我上课看起来像这样
class Some {
private enum Inner {
}
}
我正在尝试在测试类的初始化块中找到
Inner
类。class SomeTest {
private static final Class<?> INNER_CLASS;
{
for (final Class<?> declaredClass: Some.class.getDeclaredClasses()) {
if (declaredClass.getSimpleName().equals("Inner")) {
INNER_CLASS = declaredClass;
// Variable `INNER_CLASS` might be assigned in loop
// break? return?
}
}
throw new ExceptionInitializerError("failed to find Inner.class");
}
}
编译器不喜欢这样,我找不到更好的方法。
我该如何解决?有什么好的模式吗?
最佳答案
static
和instance
初始化块无法引发已检查的异常,因为无法声明这些块引发了这些异常。将ExceptionInitializerError
更改为RuntimeException
(或任何子类),然后将代码包装在try-catch
中
除了这里,您不会返回也不中断,因此您总是会抛出异常。
至于“爆发”好吧,不要。您必须编写该块,就像它是void
方法的主体一样,但是有一个限制,即您不能在任何地方使用return
。