首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala与Java内存模型

Scala与Java内存模型
EN

Stack Overflow用户
提问于 2010-03-17 12:55:11
回答 3查看 1.8K关注 0票数 14

Java模型(自1.5起)对final字段的处理方式与非final字段不同。特别是,如果在构造过程中不转义this引用,则即使通过数据竞争将对象提供给另一个线程,构造函数中的final字段也保证在其他线程上可见。(写入非final字段并不一定是可见的,因此如果不正确地发布它们,另一个线程可能会看到它们处于部分构造的状态。)

有没有关于Scala编译器如何为类创建final (而不是非final)支持字段的文档?我查阅了语言规范,并搜索了网络,但没有找到任何明确的答案。(相比之下,@scala.volatile注释被记录为将字段标记为volatile)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-17 13:47:34

我翻阅了一下历史,找出了变化是什么时候发生的。

  • 2007年10月错误报告
  • 2007年11月提交

Scala在JVM中的投影不包括在语言规范中。

票数 5
EN

Stack Overflow用户

发布于 2010-03-17 12:59:07

当您将某项声明为final时,它将创建一个val字段。可以修改引用的任何内容(如var )(显然)都不能是底层的final

这意味着case classes也包含最终字段(因为case类构造函数的参数是隐式的val)。

票数 3
EN

Stack Overflow用户

发布于 2010-03-28 17:48:15

我在Scala虫系统中为此提交了一个文档错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2462287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档