gpt4 book ai didi

java - 如何将泛型类型的类传递给Java中的方法?

转载 作者:行者123 更新时间:2023-12-01 19:53:28 24 4
gpt4 key购买 nike

我想实现一个实例化泛型类型的类。

public class DisjointSet<T extends Set<E>, E> {

private final Class<T> setType;

public DisjointSet(Class<T> setClass) {
this.setType = setClass;
}

public void doSomething(E Element) {
T set = setClass.newInstance();
set.add(element);
}
}

我尝试像这样实例化该类:

DisjointSet<HashSet<Integer>, Integer> disjointSet = new DisjointSet<>(HashSet<Integer>.class);

但是,似乎不允许在泛型类型上使用 .class 。如何正确地将泛型类型所需的类传递给构造函数?

最佳答案

不确定在参数化类型中公开内部集合类型(哈希与其他)是否合适。实际上,由于类型删除,您无法直接实例化参数化类型,但您可以传入工厂,

package langGenerics;

import java.util.HashSet;
import java.util.Set;

public class UseGenerics {
public static void main(String[] args) {
SetFactory<Integer> setFactory = HashSet::new;
DisjointSet<Integer> disjointSet = new DisjointSet<>(setFactory);
disjointSet.doSomething( 123 );
}
}

interface SetFactory<T> { Set<T> get(); }

class DisjointSet<T> {
private SetFactory<T> setFactory;
public DisjointSet(SetFactory<T> setFactory) {
this.setFactory = setFactory;
}
public void doSomething(T item) {
Set<T> set = setFactory.get();
set.add(item);
}
}

关于java - 如何将泛型类型的类传递给Java中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50437835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com