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