【发布时间】:2017-10-26 16:29:33
【问题描述】:
下面的代码定义了一个 trait T 和一个私有 val someVal 和一个扩展 T 的匿名类。如果我们从匿名类的实例中调用getMethods,someVal 被列为公共方法:
scala> trait T { private val someVal = 3 }
defined trait T
scala> new T {}.getClass.getMethods.apply(0)
res2: java.lang.reflect.Method = public int $anon$1.$line6$$read$T$$someVal()
当然someVal 在这个子类中是不可访问的,但是为什么即使在getMethods 的返回中,作为公共的呢?
【问题讨论】:
-
反射很少是更好的解决方案
标签: scala reflection