我应该在创建Date对象时使用“final”修饰符吗?

时间:2012-04-02 16:19:51

标签: java

  

可能重复:
  When should one use final?

Java程序员何时应该使用

final Date now = new Date();

Date now = new Date();

5 个答案:

答案 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。在所有其他情况下,它并不重要。