不可变和最终有什么区别?
例如,这个
@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)
@Immutable注释指示编译器执行AST转换,该转换添加必要的getter,constructors,equals,hashCode和其他辅助方法,这些方法通常在创建具有已定义属性的不可变类时编写.[1]
因此,@ Immrange会生成辅助功能,类似于Scala中的"case classes".该final关键字指示编译器该特定变量是不可变的,因为它意味着在Java中.
第一个类等同于具有多个辅助函数的第二个类.
[1] http://groovy.codehaus.org/gapi/groovy/transform/Immutable.html
| 归档时间: |
|
| 查看次数: |
2749 次 |
| 最近记录: |