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

标签 java generics

假设我有一个这样的界面;

public interface Validator<T> {
    Class<T> type();
}

如果我想用对象来实现这个接口(interface),没有任何问题;

public OrderValidator implements Validator<Order>{ 
   Class<Order> type(){ 
      return Order.class; 
   }
}

但是如果我像这样将 Collection 作为泛型类型传递,我将无法实现此接口(interface);

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

关于java - 如何使用泛型返回泛型类的类类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20216411/

相关文章:

oop - 为什么协议(protocol)的关联类型在 Swift 中不使用泛型语法?

java - 与实现Iterable相关的对象类型有哪些

java - 查找插入位置

java - Tink 中的多个私钥/公钥对

java - 如何使用java中的split在空行上分割字符串?

java - 泛型类和非静态方法

java - 如何创建通用接口(interface)方法?

swift - 访问通用属性

java - 单元测试 : Is it bad practice to call public methods (for setup) while testing another method?

java - 如何使用Gson提取字段