0

对我来说很奇怪 scala shell 中定义的类是 public static 但不是 public,我不知道为什么,有人知道吗?谢谢

scala> class Split{}
defined class Split

scala> import java.lang.reflect.Modifier
import java.lang.reflect.Modifier

scala> val clazz = classOf[Split]
clazz: Class[Split] = class Split

scala> println(Modifier.toString(clazz.getModifiers))
public static
4

1 回答 1

0

默认情况下,shell 中定义的所有类都被包含在内。它们嵌套在由 shell 定义的其他类中。

scala> println(clazz.getName)
$line2.$read$$iw$$iw$Split

我想,它们是静态的,因为它不是为了让它们访问封闭类的成员。静态可能会带来与重新定义同一类和垃圾收集相关的优势。但是我在这里钓鱼,其他人肯定可以提供更准确的答案。

于 2019-01-04T07:48:56.900 回答