众所周知,您可以使用类型参数在Java中创建一个通用类:
class Foo<T> { T tee; Foo(T tee) { this.tee = tee; } }
但是,您也可以使用泛型 构造函数 ,这意味着显式接收其自己的泛型类型参数的构造函数,例如:
class Bar { <U> Bar(U you) { // Why!? } }
我正在努力了解用例。这个功能让我做什么?
这个功能让我做什么?
它至少可以让您完成 三 件事,而这 三 件事是您无法做到的:
表达参数类型之间的关系,例如:
class Bar { <T> Bar(T object, Class<T> type) { // 'type' must represent a class to which 'object' is assignable, // albeit not necessarily 'object''s exact class. // ... }
}
<撤回>
正如@Lino首先观察到的那样,它使您可以表达参数必须与两个或多个不相关类型的组合兼容(当最多一个是接口类型时,这才有意义)。有关示例,请参见Lino的答案。