java - 创建变量中定义的类的 ArrayList

标签 java list generics arraylist

假设我有这样的东西

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/

相关文章:

java - 清除 OpenGL Shader 中的属性位置

java - 使用 Spring Boot 在 Angular 中成功调用 OPTIONS 后,未调用 GET 请求

java - 类型参数后面不能有其他边界解决方法

java - Axis 自定义处理程序未针对 wsdl 运行

java - 以下哪种方法在子类中是合法的?

c++ - 根据条件拆分 STL 列表

python - 如何验证每个列表是否包含通用号码?

Python合并不同长度列表的列表

java - Kotlin 通用反射子类

java - 如何使用同一个 Java 类来执行不同的 SQL 查询