Почему класс, определенный в оболочке scala, является общедоступным static - PullRequest
0 голосов
/ 04 января 2019

Мне странно, что класс, определенный в оболочке scala, является общедоступным static, но не общедоступным, я не знаю почему, кто-нибудь знает?Спасибо

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

1 Ответ

0 голосов
/ 04 января 2019

Все классы, определенные в оболочке, включены по умолчанию.Они вложены в другие классы, которые определяются оболочкой.

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

Я полагаю, что они являются статическими, потому что не предполагалось предоставлять им какой-либо доступ к членам включающего класса.Быть статичным может иметь преимущества, связанные с переопределением того же класса и сборкой мусора.Но я здесь ловлю рыбу, кто-то другой может дать более точный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...