是否可以在泛型函数

时间:2017-03-01 13:08:28

标签: java generics

我有一个简单的实用函数,如下所示:

public static <T, S> HashSet<S> convertSet(Set<T> list, IConverter<T, S> converter)
{
    HashSet<S> result = new HashSet<>();
    if (list != null)
    {
        for (T item : list)
            result.add(converter.convert(item));
    }
    return result;
}

我希望这个功能的结果与输入数据的类型相同,所以我尝试将功能更改为以下内容:

public static <T, S, ST extends Set<T>, SS extends Set<S>> SS convertSet(ST list, IConverter<T, S> converter)
{
    // following is not working of course!
    // I can't create a new object of the generic type!
    SS result = new SS();
    if (list != null)
    {
        for (T item : list)
            result.add(converter.convert(item));
    }
    return result;
}

有没有办法写这个以便它有效?在c ++中我们有模板,编译器会自己生成所有必需的函数,在java中有这样的东西吗?

或者任何注释库,以便我可以使用我想要支持的所有Set类来注释我的函数,并为我生成具体的函数?

我想避免手动为每个Set类编写一个函数...

0 个答案:

没有答案