Можно ли переопределить элементы внутреннего признака при расширении внешнего класса? КакВозможно переопределение элементов внутренней черты?
class Foo {
trait Bar {
def bar = Set("a", "b")
}
class Baz extends Bar
object Baz {
def apply() = new Baz
}
}
Могу ли я создать экземпляр f
из Foo
в любой форме, такой, что f.Baz().bar == Set("c", "d")
к примеру?
Уточнение: Класс Foo
является данным, я не могу его изменить. Он вызывает Baz()
, поэтому я также не могу это изменить. Таким образом, вероятно, невозможно уточнить переопределения вещей в Bar
или Baz
?
Проблема в том, что 'Foo' является данным, я его не проектировал (на самом деле это часть структуры компилятора Scala). –
Возможно, вы могли бы еще подробнее разъяснить ограничения. Я показал, как подклассировать внутреннюю черту при расширении внешнего класса. Однако, чтобы использовать подклассифицированный внутренний признак, вам необходимо создать его экземпляр. Если вы не можете переопределить код, который создает оригинальную черту с вашим новым признаком, вы действительно не можете сделать этого. Но это не имеет никакого отношения к тому, что это внутренняя черта. – kong