我有一个ListCreator<T>
类和一个构造该类实例的静态方法collectFrom()
。 collectFrom()
具有参数List l
,我想参数化返回的ListCreator
实例,其类型与指定的List
相同。
理想情况下,我想要这样的东西:
public static ListCreator<T> collectFrom(List<T> l) {
return new ListCreator<T>(l);
}
但这是不可能的,所以我坚持这样做:
public class ListCreator<T> {
List<T> l;
public ListCreator(List<T> l) {
this.l = l;
}
public static ListCreator collectFrom(List l) {
return new ListCreator(l);
}
}
有更好的解决方案吗?
最佳答案
通过在其定义中引入类型参数来泛化您的方法:
public static <T> ListCreator<T> collectFrom(List<T> l) {
return new ListCreator<T>(l);
}
实际上,
class ListCreator<T> {
中声明的type参数对该方法没有意义,因为它是static
(请参阅Static method in a generic class?)。