java - 创建注释类实例的数组列表

标签 java list class reflection

我在创建实例数组列表时遇到问题。我有一个Set<Class<?>>然后我检查他们是否实现了特定的接口(interface)。如果他们这样做,我想将此类的实例添加到特定接口(interface)的数组列表中。

这是我的代码:

ArrayList<MyInterface> list = new ArrayList<>();
for (Class clazz : annotatedClasses) {
    if(MyInterface.class.isAssignableFrom(clazz)) {
        Object instance = clazz.getConstructor().newInstance();
        list.add(object); //ERROR: Object != MyInterface
    }
}

我该如何解决这个问题?

最佳答案

您应该将 newInstance 的结果转换为所需的类型。你知道这不会抛出 ClassCastException因为您刚刚检查过它是可分配的。

List<MyInterface> list = new ArrayList<>();
for (Class<?> clazz : annotatedClasses) {
    if (MyInterface.class.isAssignableFrom(clazz)) {
        Object instance = clazz.getConstructor().newInstance();
        list.add((MyInterface) instance);
    }
}

但是,请注意,如果类没有默认构造函数,这可能会引发异常。

关于java - 创建注释类实例的数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210886/

相关文章:

java - 使用 treeNode 本身在 Jtree 中突出显示 treeNode

objective-c - 错误前预期的说明符限定符列表

python - 初始化多个父类(super class)python

java - 从队列转换为 ArrayList

c++ - 在类外重载运算符

java - 动态类加载时运行时注释扫描

java - 将图像添加到 jasperreport(在 iReport 中创建)后如何保持图像质量?

java - 当定义为基类时,调用扩展类对象中的基类方法

java - 在运行时在现有类中生成代码 (Java)

python - 在 Python 中将 float 列表转换为缓冲区?