【发布时间】:2018-12-29 04:52:18
【问题描述】:
在以下代码中,我尝试使用 Decorator 类实例化特征 A 并向其添加方法 p,以便我可以使用 p 方法获取另一个对象 A:
trait A {
def x: Int
}
case class Decorator(a: A) {
def withPrint: A = new A {
val x = 100
def p: Unit = println(x)
}
}
val a = new A {val x = 100}
val d = Decorator(a).withPrint
但是当我尝试调用d.p 时会出错
值 p 不是 A$A54.this.A 的成员
然后我在d 中打印声明的方法我看到p 是private!
d.getClass.getDeclaredMethods.foreach(println)
# public int stringsimilarity.A$A55$A$A55$Decorator$$anon$2.x()
# private void stringsimilarity.A$A55$A$A55$Decorator$$anon$2.p()
谁能解释为什么会这样?任何帮助将不胜感激!谢谢!
【问题讨论】:
标签: scala access-modifiers anonymous-inner-class