假设我有这样的东西
Class klazz = Integer.class;
我有兴趣做这样的事情
List<(klazz Class)> something = new ArrayList<>();
something.add(new Integer(..))
something.add(new Integer(..))
.. etc
我可能需要使用反射,但是,我不确定如何应用它。
是否可以不进行反射(reflection)?如果不是,您认为如何适合实现?
提前致谢
最佳答案
我无法完全理解该要求,但这可能会有所帮助:
public class Main {
public static void main(String[] args) {
ContainerWrapper<Integer> containerWrapper = new ContainerWrapper<>(Integer.class);
containerWrapper.add(1);
System.out.println(containerWrapper.containerType());
System.out.println(containerWrapper.isInteger());
}
}
class ContainerWrapper<T> {
// Store type information here
private Class<T> clazz;
private List<T> list = new ArrayList<>();
public ContainerWrapper(Class<T> clazz) {
this.clazz = clazz;
}
public void add(T element) {
list.add(element);
}
public Class<T> containerType() {
return clazz;
}
public boolean isInteger() {
return clazz.isAssignableFrom(Integer.class);
}
}
您可以使用clazz.isAssignableFrom(*.class)检查
T
类型
输出:
class java.lang.Integer
true
关于java - 创建变量中定义的类的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50478091/