Этот вопрос расширяет Initialize final variable before constructor in Java, так как меня не устраивало предоставленный там ответ.Инициализировать конечную переменную перед конструктором в Java
У меня такой же вопрос. У меня есть переменные, которые мне нужно установить как final
, но я не могу этого сделать, потому что мне нужно установить их в значения, которые требуют исключения, чтобы сделать их невозможными, если я не поместил их в конструктор. Проблема в том, что я тогда должен сделать новый экземпляр объекта каждый раз, когда я хочу, чтобы ссылаться на final
static
переменные, которые на самом деле не имеет смысла ...
пример, где path
не может быть определена вне конструктор, ни внутри конструктора, если только new
экземпляр не создается каждый раз, когда объект ссылается из другого класса:
public class Configuration {
private static final String path;
public Configuration() throws IOException, URISyntaxException {
propertiesUtility = new PropertiesUtility();
path = propertiesUtility.readProperty("path");
}
}
Не могли бы вы использовать 'try {...} finally {...}', чтобы гарантировать, что 'path' всегда задан, удовлетворяя модификатору' final'? Это было бы тривиально в вашем примере, но, возможно, не в реальном мире - во всяком случае, неясно, какое значение «путь» следует принимать в ситуации исключения. –