如何使用泛型返回泛型类的类类型?

Iarwa1N

假设我有一个像这样的接口;

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 不起作用。

半位

如果您只想使其编译,请尝试:

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;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章