Я столкнулся с прецедентом, когда я хотел бы объявить поле static final с инструкцией инициализатора, объявленной для того, чтобы выбросить проверенное исключение. Как правило, это будет выглядеть так:
public static final ObjectName OBJECT_NAME = new ObjectName("foo:type=bar");
Проблема, которую я имею здесь, заключается в том, что конструктор ObjectName может вызывать различные проверенные исключения, которые меня не волнуют (потому что я знаю, что мое имя действительно, и все в порядке, если он с жадностью падает,). Компилятор java не позволит мне просто игнорировать это (как это проверенное исключение), и я бы предпочел не прибегать к:
public static final ObjectName OBJECT_NAME;
static{
try{
OBJECT_NAME = new ObjectName("foo:type=bar");
}catch(final Exception ex){
throw new RuntimeException("Failed to create ObjectName instance in static block.",ex);
}
}
Потому что статические блоки действительно очень трудны для чтения. Есть ли у кого-нибудь предложение о том, как справиться с этим случаем красивым, чистым способом?