确保用Java初始化了最后一个字段

确保用Java初始化了最后一个字段,java,final,Java,Final,我用多个构造函数扩展了一个类。我在我的子类中添加了最后一个字段,这当然需要在我自己的构造函数中初始化 问题是我不想重新实现(大多数)超类的构造函数,所以我想做如下事情: public myConstructor(Object... params){ super(params); try{ this.finalField = "backup value"; } catch(someException e){ } } 这有可能吗 编辑: 我

我用多个构造函数扩展了一个类。我在我的子类中添加了最后一个字段,这当然需要在我自己的构造函数中初始化

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

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

    }
}
这有可能吗

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

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

  • 您可以创建一个静态工厂方法,该方法将创建对象(并在需要时抛出异常),而不是构造函数,并在可重用的私有方法中提供公共初始化功能
  • 您还可以使用构建器模式而不是多个构造函数
为了简化对象初始化过程,我通常使用以下解决方案:

  • 您可以创建一个静态工厂方法,该方法将创建对象(并在需要时抛出异常),而不是构造函数,并在可重用的私有方法中提供公共初始化功能
  • 您还可以使用构建器模式而不是多个构造函数
让所有构造函数调用一个设置最终字段的构造函数。

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

不清楚。你是说你不想在声明它的同一个类中初始化一个final字段吗?这是不允许的。是否要重新初始化子类中的最后一个字段?这也不合法。@juditional我是说,在一些构造函数中,我不确定最终字段是否已初始化。如果不是,我想初始化它。@dtech:initialize在您声明它的地方。编译器不允许您有未初始化的最终字段。不清楚。你是说你不想在声明它的同一个类中初始化一个final字段吗?这是不允许的。是否要重新初始化子类中的最后一个字段?这也不合法。@juditional我是说,在一些构造函数中,我不确定最终字段是否已初始化。如果不是,我想初始化它。@dtech:initialize在您声明它的地方。编译器将不允许您拥有未初始化的最终字段。