确保在Java中初始化最终字段

时间:2012-06-19 08:18:27

标签: java final

我使用多个构造函数扩展了一个类。我在我的子类中添加了一个final字段,其中ofcourse需要在我自己的构造函数中初始化。

问题是我不想重新实现(大多数)超类的构造函数,所以我想做这样的事情:

public myConstructor(Object... params){
    super(params);
    try{
        this.finalField = "backup value";
    }
    catch(someException e){

    }
}

这在某种程度上是可能的吗?

修改 的: 我意识到这种情况永远不会发生,因为超类构造函数永远不会调用我自己的构造函数。

2 个答案:

答案 0 :(得分:2)

为简化对象初始化过程,通常我使用以下解决方案:

  • 您可以创建一个静态工厂方法,它将创建对象(并在需要时抛出异常)而不是构造函数,并在可重用的私有方法中提供通用的初始化功能。
  • 您也可以使用Builder-pattern而不是多个构造函数。 http://en.wikipedia.org/wiki/Builder_pattern

答案 1 :(得分:1)

让所有构造函数调用一个构造最终字段的构造函数。

相关问题