我是 Java 新手,无法了解枚举是否使最终变量过时?
问问题
56 次
5 回答
2
枚举和最终变量无关。在枚举之前,人们不得不求助于常量,但它们并不等价。
于 2012-06-27T05:17:05.703 回答
1
我假设在这个问题中你问的是整数常量而不是任何其他类型?如果不是,请记住枚举只能是枚举(整数),不能是特定类型。
否则……再一次,它不会使它们过时。枚举在只有(少量)有限数量的永远不会改变的可能性的情况下很有用。在这些可能是无限数量的事物(或大量事物)或并非全部完全定义但有些可以定义的情况下,这不是那么有用。
这真的取决于使用情况。
于 2012-06-27T05:27:52.747 回答
1
绝对不。Java 中的最终变量不仅仅是常量。
- Final 可以应用于方法参数以提供编译时保证,防止重新分配。
- Final 可以应用于局部变量,以提供编译时防止重新分配的保证。这对于实例化引用局部变量(也称为闭包)的匿名内部类也是必需的。
- Final 可以应用于实例变量以保证这些字段的引用不变性。如果字段类型是不可变的或采取了适当的防御措施,这可以用来确保您的对象的不可变性,使其成为线程安全的。
- Final 可以应用于方法以防止子类覆盖它们。
- Final 可以应用于类以完全防止类的扩展。
final
如您所见,关键字仍有很多用途。
于 2012-06-27T05:20:51.047 回答
0
如果您的意思是public static final int
用作命名常量的变量,那么是的,枚举旨在代替它们使用。
然而,final 变量在一些地区仍然有用——特别是,闭包的使用需要它们,例如
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 变量仍可用作配置常量。
于 2012-06-27T05:18:10.663 回答
0
两者都有不同的应用。枚举更适合状态机或值不相关的地方。我有一组最终变量,它们在我的一个程序中充当值和状态指示器。final 变量仍然有重要的应用,因为它们允许在整个程序中简单地修改字面值。
/简而言之
于 2012-06-27T05:18:34.250 回答