Я столкнулся с прецедентом, когда я хотел бы объявить поле 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); } }
Потому что статические блоки действительно очень трудны для чтения. Есть ли у кого-нибудь предложение о том, как справиться с этим случаем красивым, чистым способом?