Универсальный объект с приватным конструктором - PullRequest
1 голос
/ 23 июня 2011

Вот моя проблема.Я хотел бы иметь класс с закрытым конструктором, который может быть создан с использованием более одного статического метода, в точности как 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 Ответ

5 голосов
/ 23 июня 2011

Попробуйте:

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

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

...