加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

什么是Scala等同于Java的静态块?

发布时间:2020-12-16 09:42:47 所属栏目:安全 来源:网络整理
导读:什么是Scala等同于Java的静态块? 解决方法 协同对象的构造函数(即正文)中的代码与Java类的静态初始化块中的代码不完全相同。在下面的示例中,我创建一个A的实例,但不会发生初始化。 scala object Test { class A; object A { println("A.init") }} defined
什么是Scala等同于Java的静态块?

解决方法

协同对象的构造函数(即正文)中的代码与Java类的静态初始化块中的代码不完全相同。在下面的示例中,我创建一个A的实例,但不会发生初始化。

scala> object Test { class A; object A { println("A.init") }}        
defined module Test

scala> new Test.A
res3: Test.A = Test$A@3b48a8e6

scala> Test.A
A.init
res4: Test.A.type = Test$A$@6e453dd5

要在创建类的第一个实例时触发协同对象的构造,您可以从类构造函数访问它。

scala> object Test { class A { A }; object A { println("A.init") }}
defined module Test

scala> new Test.A                                                  
A.init
res5: Test.A = Test$A@4e94a28e

scala> new Test.A
res6: Test.A = Test$A@30227d4e

在许多情况下,差异并不重要。但如果你发射导弹(或其他副作用),你可能会关心!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读