Java程序员何时应该使用
final Date now = new Date();
在
Date now = new Date();
答案 0 :(得分:7)
除了决定某个变量是否应该是最终的,我认为final Date now = ...
的问题是,虽然现在的引用不会改变(它是最终的),但它的价值威力。所以我觉得这对于那些不知道Date是可变的开发人员有点误导。
例如,您可以写:
public static void main(String[] args) {
final Date now = new Date();
System.out.println(now);
now.setHours(5);
System.out.println(now);
}
并从最后约会中获得2个不同的日期......
现在任何可变变量都是如此(final List<String> l
的内容也可以改变),但我认为在Date的情况下,很容易假设不变性。
更好的解决方案是使用joda时间库:
final DateTime now = new DateTime();
在这种情况下,now
是不可变的,不会更改(引用和值)。
答案 1 :(得分:3)
在Java中,final
变量是一个变量,其值一旦被赋值,就无法更改。当为该变量赋值时,您声明变量final
,并且您永远不需要更改该值。
答案 2 :(得分:2)
当您使用final关键字时,您永远不能更改variable.Same的值来申请日期。
答案 3 :(得分:1)
最终变量只能显式初始化一次。声明为final的引用变量永远不能重新分配以引用不同的对象。
但是,可以更改对象内的数据。因此可以更改对象的状态,但不能更改引用。
对于变量,final修饰符通常与static一起使用,以使常量成为类变量。 例如:
class Test{
final int value=10;
// The following are examples of declaring constants:
public static final int BOXWIDTH = 6;
static final String TITLE = "Manager";
public void changeValue(){
value = 12; //will give an error
}
}
如果您的要求属于此类型,则可以使用最终日期。
答案 4 :(得分:1)
如果声明一个只读的字段,并且您希望类具有线程安全性 - 那么您应该使用final
修饰符。如果在匿名类中使用它,有时你被迫做出变量final。在所有其他情况下,它并不重要。