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