私有构造函数的通用对象

Ste*_*roz 1 java generics private-constructor

这是我的问题.我想有一个私有构造函数的类,可以使用多个静态方法创建,就像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;
}
Run Code Online (Sandbox Code Playgroud)

这不起作用:Eclipse强调了intfrom createHorizontalWorkFlow<T>(int _arrowSize)并给了我错误Syntax error on token(s), misplaced construct(s)

Boh*_*ian 5

试试这个:

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

你非常接近.只是<T>在错误的地方 - 你必须在返回类型之前声明泛型类型.