是否枚举最终变量已过时?

时间:2012-06-27 05:12:50

标签: java enumeration final

我是java的新手,无法知道枚举是否使最终变量过时了?

5 个答案:

答案 0 :(得分:2)

枚举和最终变量无关。在枚举之前,人们不得不求助于常数,但它们并不等同。

答案 1 :(得分:1)

绝对不是。 Java中的最终变量不仅仅是常量。

  • Final可以应用于方法参数,以提供编译时保证以防止重新分配。
  • Final可以应用于局部变量,以提供编译时保证以防止重新分配。这也是实例化引用局部变量(也称为闭包)的匿名内部类所必需的。
  • Final可以应用于实例变量,以保证这些字段的引用不变性。如果字段类型是不可变的或者采取了适当的防御措施,这可以用来确保你的对象的不变性,使它非常安全。
  • Final可以应用于防止子类覆盖它们的方法。
  • Final可以应用于类,以防止类的扩展。

正如您所看到的,final关键字仍然有很多用途。

答案 2 :(得分:1)

我假设在这个问题中你问的是整数常量而不是任何其他类型?如果没有,请记住枚举只能是枚举(整数)而不能是特定类型。

否则......再次,它不会使它们过时。当只有(小)有限数量的可能性永远不会改变时,枚举是有用的。如果这些东西可以是无数个(或大量的)或者不是全部定义但有些可以是完全定义的,那就不那么有用了。

这实际上取决于使用情况。

答案 3 :(得分:0)

如果你的意思是public static final int变量用作命名常量,那么是的,枚举是为了代替它们。

但是,最终变量在少数几个地区仍然有用 - 特别是使用闭包需要它们,例如

final int foo = 3; // must be marked final
t = new Thread(new Runnable() { 
    public static void run() { 
        System.out.println(foo + 1);
    }
});
t.start();

此外,PSF变量仍然可用作配置常量。

答案 4 :(得分:0)

两者都有不同的应用。对于状态机或值不相关的地方,枚举更好。我有一组最终变量,在我的一个程序中同时作为值和状态指示器。最终变量仍然具有重要的应用,因为它们允许在整个程序中简单修改文字值。

/简而言之