Универсальный объект с приватным конструктором

Здесь моя проблема. Я хотел бы иметь класс с закрытым конструктором, который может быть создан с более чем одним статическим методом, точно так же, как Box.createHorizontalBox(), Где это становится сложным, когда этот класс использует дженерики.

Пожалуйста, скажите мне, как сделать это правильно:

private WorkFlow(int _arrowSize) {
  this.arrowSize = _arrowSize;
  this.elements = new ArrayList<T>();
}

public static WorkFlow<T> createHorizontalWorkFlow<T>(int _arrowSize) {
  WorkFlow<T> workFlow = new WorkFlow<T>(_arrowSize);
  workFlow.vertical = false;
  return workFlow;
}

Это не работает: Eclipse подчеркивает int от createHorizontalWorkFlow<T>(int _arrowSize) и дает мне ошибку Syntax error on token(s), misplaced construct(s)

1 ответ

Решение

Попробуй это:

public static <T> WorkFlow<T> createHorizontalWorkFlow(int _arrowSize) {
  WorkFlow<T> workFlow = new WorkFlow<T>(_arrowSize);
  workFlow.vertical = false;
  return workFlow;
}

Вы были довольно близко Просто имел <T> в неправильном месте - вы должны объявить универсальный тип перед возвращаемым типом.

Другие вопросы по тегам