繁体   English   中英

在Java抽象类中初始化“默认”最终属性

[英]Initializing “Default” final attributes in Java abstract class

我有一个抽象类,应该具有一个(int)属性,该属性在初始化后不能修改,并且预设为1; 最好的方法是什么? 我应该做最后吗? 要求是在类内部,我将只有一个构造函数(带有参数),并且没有设置方法。 如果是这样的话,如果它是最终版本,并且我将如何在构造函数中对其进行初始化,那么如何默认将其设置为1? 谢谢!

您应该使用带有参数的构造函数来设置初始值。 然后,就像您所说的,不要创建任何设置器,并确保您的字段是私有的,以便没有人可以访问它。

这样,您将做自己想要的事情,初始化字段,但此后再也不会更改。

事实上,如果它始终是一个恒定值,您甚至可以对其进行硬编码。

例如,如果变量应始终为25,则可以执行以下操作:

public abstract class Test
{
  protected final int pressure = 25;

  //Constructor
  public Test()
  {
    // TODO Auto-generated constructor stub
  }
}

但是,如果在运行时评估值,则需要在Object的构造函数中进行设置:

public abstract class Test
{
  protected final int pressure;

  //Constructor
  public Test(int pressure)
  {
    this.pressure = pressure;
  }
}

请注意,在这种情况下, 不得更早分配变量!

是否应使用最终变量的问题取决于其目的。 最终变量在整个生命周期中只能分配一次。 如果必须进行任何修改,则不应使用。

您可以使用构造函数重载来实现这一点。 参见示例:

public abstract class TestClass{

  private final int otherParam;
  private final int fixedParam;

  public TestClass(final int otherParam){
    this.otherParam = otherParam;
    this.fixedParam = 1;
  }

  public TestClass(final int otherParam, final int fixedParam){
    this.otherParam = otherParam;
    this.fixedParam = fixedParam;
  }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM