提问者:小点点

具有相同名称的Scala对象和trait


在Scala中,一个类和一个对象可以是同伴(相同的名称,相同的文件)

我遇到了Scala源代码,其中有一个文件,其中定义了一个trait和对象,并且两者都具有相同的名称,但对象没有扩展trait。

这种款式可以吗?


共2个答案

匿名用户

是的,在trait或对象同名对象成为伴随对象的情况下,您可以看到下面的代码,您可以在类和trait这两种情况下访问私有成员

特性

trait Simple {
private def line = "Line"
}

object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}

Simple.lineObj

.class

class Simple {
private def line = "Line"
}

object Simple {
val objTrait = new Simple{}
def lineObj=objTrait.line
}

Simple.lineObj

匿名用户

object的一个典型用例是在 Java中标记为静态的方法和字段,如果有帮助的话。

该对象不会扩展特征/,而是伴随它,因此称为伴随对象