这个问题扩展了Initialize final variable before constructor in Java,因为我对那里提供的答案不满意。在Java中的构造函数中初始化一个最终变量
我有同样的问题。我有变量,我需要设置为final
,但我不能这样做,因为我需要将它们设置为需要异常被捕获的值,因此使它不可能,除非我把它们放在构造函数中。问题在于,我必须在每次想引用变量时才会创建对象的新实例,这些变量实际上没有意义...
一个示例,其中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'修饰符吗?在你的例子中,这将是微不足道的,但也许不是现实世界 - 在任何情况下,不清楚在异常情况下'路径'应该采取什么样的价值。 –