gpt4 book ai didi

scala - 无法从伴随对象访问伴随类的方法

转载 作者:行者123 更新时间:2023-12-04 05:32:54 24 4
gpt4 key购买 nike

我认为我可以从伴生对象访问伴生类的每个方法。但我不能?

class EFCriteriaType(tag:String) extends CriteriaType
{
// implemented method of CriteriaType
def getTag = this.tag
}

object EFCriteriaType
{
var TEXT: CriteriaType = new EFCriteriaType("text")

override def toString = getTag
}

编译器错误:
未找到:值 getTag

我做错了什么?

最佳答案

您正在尝试调用方法 getTagobject EFCriteriaType .该对象中没有这样的方法。您可以执行以下操作:

object EFCriteriaType extends EFCriteriaType("text") {
override def toString = getTag
}

从而使伴随对象成为一种模板。

您可以从伴随对象访问通常无法在类中访问的成员,但您仍然需要拥有该类的实例才能访问它们。例如:
class Foo {
private def secret = "secret"
def visible = "visible"
}
object Foo {
def printSecret(f:Foo) = println(f.secret) // This compiles
}
object Bar {
def printSecret(f:Foo) = println(f.secret) // This does not compile
}

这里是私有(private)方法 secret可从 Foo 访问的伴生对象。 Bar 不会编译,因为 secret 是不可访问的。

关于scala - 无法从伴随对象访问伴随类的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11685718/

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