Java泛型 - 确保实现静态方法

时间:2011-01-29 14:40:54

标签: java generics

我正在使用这样的泛型:public class MyList<T>。有没有办法确保由T表示的类实现某种静态方法?

2 个答案:

答案 0 :(得分:2)

不,即使没有泛型,也没有办法确保类实现静态方法。

但是,您可以创建一个通用的静态方法。

public static <T> List<T> makeSingletonList(T item) {
      ArrayList<T> result = new ArrayList<T>();
      result.add(item);
      return result;
}

答案 1 :(得分:2)

不幸的是没有。

作为替代方案,请考虑您的类的静态方法是否属于某种关联类(如构建器):

class Person {
    public static Person createFromDatastore(Datastore datastore) { ... }
}

将静态作为非静态方法移动到单独的类可能更好:

class PersonBuilder implements Builder<Person> {
     public Person createFromDatastore(Datastore datastore) { ... }
}

这意味着您可以指定您的通用类的客户现在可以被要求提供它:

public class MyList<B extends Builder<T>, T> ...