Gar*_*lon 8 methods scala object
我以为我可以从我的伴侣对象访问伴侣类的每个方法.但我不能?
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
}
Run Code Online (Sandbox Code Playgroud)
编译器错误:找不到:值getTag
我做错了什么?
您正在尝试调用的方法getTag在object EFCriteriaType.该对象中没有这样的方法.你可以这样做:
object EFCriteriaType extends EFCriteriaType("text") {
override def toString = getTag
}
Run Code Online (Sandbox Code Playgroud)
从而使伴侣对象成为一种模板.
您可以从协同对象访问通常不在类中访问的成员,但您仍需要具有该类的实例才能访问它们.例如:
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
}
Run Code Online (Sandbox Code Playgroud)
这里的私有方法secret可以从Foo同伴对象访问.由于秘密无法访问,Bar不会编译.
我不太确定你在这里尝试做什么,但你需要在类的实例上调用getTag:
override def toString(x:EFCriteriaType) = x.getTag
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9515 次 |
| 最近记录: |