Поддерживает ли xtend несколько конструкторов? - PullRequest
0 голосов
/ 31 мая 2018

Я использую Eclipse IDE.Первый конструктор может вызываться, но не второй.Мне интересно, поддерживает ли xtend несколько конструкторов?

@Data abstract class MatchingBase implements TidilySerializable {
  val List<Integer> connections

  new (int componentSize) {
    connections = (0 ..< componentSize).toList
  }

  new (List<Integer> conn) {
    connections = new ArrayList<Integer>()
    for (int i : 0 ..< componentSize)
      connections.add(conn.get(i))
  }
}

@Data class Permutation extends MatchingBase {
}

Тогда, если я вызову new Permutation(new ArrayList<Integer>()) в Eclipse, это подчеркивает ошибку времени компиляции.

1 Ответ

0 голосов
/ 01 июня 2018

Да, он поддерживает несколько конструкторов.Тем не менее, я считаю, что ошибка происходит из-за вашего второго конструктора.В области действия второго конструктора он не знает, что такое componentSize.Вы имели в виду что-то вроде

new (List<Integer> conn) {
    connections = new ArrayList<Integer>()
    for (int i : 0 ..< conn.size) {
        connections.add(conn.get(i))
    }
}

Посмотрите документы здесь для получения дополнительной информации о конструкторах xtend

...