不可变和最终之间的区别

Mor*_*ive 6 groovy

不可变和最终有什么区别?

例如,这个

@Immutable
public MyClass {
   String property1 
   MyOtherClass property2
   List myLIst
}
Run Code Online (Sandbox Code Playgroud)

public final MyClass {
   final String property1 
   final MyOtherClass property2
   final List myLIst
}
Run Code Online (Sandbox Code Playgroud)

Rus*_*hen 5

@Immutable注释指示编译器执行AST转换,该转换添加必要的getter,constructors,equals,hashCode和其他辅助方法,这些方法通常在创建具有已定义属性的不可变类时编写.[1]

因此,@ Immrange会生成辅助功能,类似于Scala中的"case classes".该final关键字指示编译器该特定变量是不可变的,因为它意味着在Java中.

第一个类等同于具有多个辅助函数的第二个类.

[1] http://groovy.codehaus.org/gapi/groovy/transform/Immutable.html