假设我有这样的界面;
public interface Validator<T> {
Class<T> type();
}
如果我想用一个对象实现这个接口,那就没有任何问题;
public OrderValidator implements Validator<Order>{
Class<Order> type(){
return Order.class;
}
}
但如果我将Collection作为泛型类型传递给我,我就无法实现此接口;
public CollectionValidator implements Validator<Collection<Item>>{
Class<Collection<Item>> type(){
//how can I implement this method to return type of Collection<Item> ?
}
}
如何实施type()
方法以返回Collection< Item>
的类型?
Collection< Item>.class
不起作用。
答案 0 :(得分:2)
如果您只是想编译,请尝试:
public interface Validator<T> {
Class<T> type();
}
public static class CollectionValidator<Item> implements Validator<Collection<Item>>{
@SuppressWarnings("unchecked")
public Class<Collection<Item>> type() {
return (Class<Collection<Item>>) (Class<?>) Collection.class;
}
}
答案 1 :(得分:0)
试试这样:
接口:
public interface MyInterface<T> {
Class<?> type();
}
实现:
public class MyClass implements MyInterface<Object>{
@Override
public Class<?> type() {
//some collection to test
List<String> lst = new LinkedList<>();
return lst.getClass();
}
}