На самом деле Array(s)
оценивается во время выполнения, потому что используемая вами структура является эффективным вызовом первичного конструктора вашего суперкласса.
Напомним, что класс может иметь только первичный конструктор, который принимает аргументы в своем определении class A(param:AnyRef)
, другие конструкторы называются this
и должны вызывать первичный конструктор (или связывать конструкторы до него). 1006 *
И такое ограничение существует при супер-вызове, то есть первичный конструктор подкласса вызывает супер-первичный конструктор.
Вот как можно увидеть такую структуру Scala
class Foo (val x: Int)
class Bar (x: Int, y: Int) extends Foo(x + y)
Java-аналог
public class Foo {
private x:int;
public Foo(x:int) {
this.x = x;
}
public int getX() {
return x;
}
}
public class Bar {
private y:int;
public Bar(x:int, y:int) {
/**** here is when your array will be created *****/
super(x+y);
this.y = y;
}
public int getY() {
return y;
}
}