声明后可以初始化最终变量吗?

时间:2012-02-25 09:00:06

标签: java syntax final

这是否可能,很少有人认为可能,我也在这里看到它link ..但是当我亲自尝试它时,它给我编译错误..

我的意思是,

Class A{
    private final String data;

    public A(){
        data = "new string";
    }
}

提前致谢..

4 个答案:

答案 0 :(得分:7)

是的,有可能。类用小案例c编写。否则你的代码完全没问题(除了识别):

public class A {
   private final String data;

   public A() {
      data = "new string";
   }
}

答案 1 :(得分:4)

您可以在声明后初始化最终实例变量。

  • 如果它是静态的,则必须在静态初始化中初始化它 块。
  • 否则,您必须在构造函数中初始化它。

您发布的代码的问题是大写C。鲍里斯指出,它应该是class

答案 2 :(得分:2)

像鲍里斯建议的那样,代码很好。但是你不能做的是为最终的变量数据分配第二个值。 data = "another string";将无法编译,因为数据是最终的,因此在初始化后无法更改其值。

public class A {
   private final String data;

   public A() {
      data = "new string";
      data = "another string";
   }
}

答案 3 :(得分:2)

您可能拥有多个构造函数,在这种情况下,您必须初始化每个构造函数中的最终实例字段。