Java通用规范

Java通用规范,java,generics,Java,Generics,很难用java泛型来表达这一点。我想创建一个方法来创建一些测试数据——在本例中,传入一个集合类型和一个值类型,并返回一个例子——例如 generateSampleCollection(HashSet.class, String.class) -> returns a HashSet<String> generateSampleCollection(HashSet.class,String.class)->返回一个HashSet 问题是我不知道如何用泛型来表达。例如: pu

很难用java泛型来表达这一点。我想创建一个方法来创建一些测试数据——在本例中,传入一个集合类型和一个值类型,并返回一个例子——例如

generateSampleCollection(HashSet.class, String.class) -> returns a HashSet<String> 
generateSampleCollection(HashSet.class,String.class)->返回一个HashSet
问题是我不知道如何用泛型来表达。例如:

public static <T extends Collection<E>, E> T<E> generateSampleCollection(Class<T> t, Class<E> i) {... }
publicstatict生成示例集合(类T,类i){…}

失败,错误为“类型T不是泛型”。有人知道怎么做吗?似乎它应该是可以做到的,但我没有看到它。

在泛型中,无法表示由类型变量表示的类型有一个(或多个)类型参数

所以你不能做你想做的事。你最多能做的就是

public static <T extends Collection<E> /* and the E doesn't change anything */, E> T generateSampleCollection(
        Class<T> t, Class<E> i) throws InstantiationException, IllegalAccessException {
    return null; // actually return an instance of type T
}

publicstatic泛型中无法表示由类型变量表示的类型具有(或多个)类型参数

所以你不能做你想做的事。你最多能做的就是

public static <T extends Collection<E> /* and the E doesn't change anything */, E> T generateSampleCollection(
        Class<T> t, Class<E> i) throws InstantiationException, IllegalAccessException {
    return null; // actually return an instance of type T
}

publicstatic泛型中无法表示由类型变量表示的类型具有(或多个)类型参数

所以你不能做你想做的事。你最多能做的就是

public static <T extends Collection<E> /* and the E doesn't change anything */, E> T generateSampleCollection(
        Class<T> t, Class<E> i) throws InstantiationException, IllegalAccessException {
    return null; // actually return an instance of type T
}

publicstatic泛型中无法表示由类型变量表示的类型具有(或多个)类型参数

所以你不能做你想做的事。你最多能做的就是

public static <T extends Collection<E> /* and the E doesn't change anything */, E> T generateSampleCollection(
        Class<T> t, Class<E> i) throws InstantiationException, IllegalAccessException {
    return null; // actually return an instance of type T
}
公共静态