Я знаю, что это подходит вашей иерархии, но как насчет размещения всех ваших личных методов в
private trait Y {
В противном случае вы всегда можете имитировать пространство имен:
object SuperHorribleLongName {
object SHLN { //Dummy alias
trait X {
private[SHLN] def internalGaga() : Unit
}
}
type X = SHLN.X //Lift into main object
}
Это не удовлетворяет, так как SHLN виден, и поворот его private
предотвращает подъем X. И это грязно.
Итак, давайте перевернем проблему внутрь / наружу:
private object SHLN {
trait X {
private[SHLN] def internalGaga() : Unit
}
}
//Expose the instance under wanted name
val SuperHorribleLongName = SHLN