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

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
}

编译错误:
找不到:值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不会编译.

(编辑:李大同)

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

    推荐文章
      热点阅读