gpt4 book ai didi

scala - 类中的单例对象与伴侣对象

转载 作者:行者123 更新时间:2023-12-04 07:29:12 25 4
gpt4 key购买 nike

我写了以下代码:

class a {

object c {
var a = "STATIC"

def m() = print("STATIC METHOD")

var f = () => print("STATIC FUNCTION")
}

}

object m {
def main(args: Array[String]) = {
var o = new a()
o.c.m()
}
}
  1. 我能说对象c中声明的变量、函数和方法可以是静态的吗?
  2. 如果我用 a 更改对象 c 的名称,那么该对象会成为伴生对象吗?

最佳答案

Scala 没有 Java 所具有的“静态”的真正含义。

对象在使用静态方法/字段的 JVM 上有支持这一事实是一个泄漏的实现细节,只有在使用 Java/JVM 互操作时才需要处理。

除非您明确需要该互操作,否则您需要停止将声明的对象视为“静态”,而应将它们视为给定范围内的单例。

嵌套在类下的内部对象意味着对于每个类实例,该对象只会有一个实例,这与内部类可能有多个实例不同。

这也适用于顶层,除了 Scala 可以与其他 JVM 语言进行额外的兼容性,并将一些方法/成员标记为静态。

关于scala - 类中的单例对象与伴侣对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50523749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com