scala – 无法从伴随对象访问伴随类的方法
发布时间:2020-12-16 19:16:27 所属栏目:安全 来源:网络整理
导读:我以为我可以从我的伴侣对象访问伴侣类的每个方法.但我不能? class EFCriteriaType(tag:String) extends CriteriaType{ // implemented method of CriteriaType def getTag = this.tag }object EFCriteriaType{ var TEXT: CriteriaType = new EFCriteriaTyp
我以为我可以从我的伴侣对象访问伴侣类的每个方法.但我不能?
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 } 编译错误: 我做错了什么? 解决方法
您正尝试在对象EFCriteriaType中调用方法getTag.该对象中没有这样的方法.你可以这样做:
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 } 私有方法秘密可以从Foo的伴侣对象访问.由于秘密无法访问,Bar不会编译. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |