创建带注释 类 实例的数组列表
create array list of instances of annotated classes
我在创建实例数组列表时遇到问题。我得到一个 Set<Class<?>>
然后我检查它们是否实现了特定的接口。如果他们这样做,我想将此 class 的实例添加到特定接口的数组列表中。
这是我的代码:
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
}
}
我该如何解决这个问题?
您必须将其转换为您的界面
Object instance = clazz.getConstructor().newInstance();
list.add((MyInterface)instance);
也可以写成
MyInterface instance = (MyInterface) clazz.getConstructor().newInstance();
list.add(instance);
您应该将 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);
}
}
但是,请注意,如果 class 没有默认构造函数,这可能会引发异常。
我在创建实例数组列表时遇到问题。我得到一个 Set<Class<?>>
然后我检查它们是否实现了特定的接口。如果他们这样做,我想将此 class 的实例添加到特定接口的数组列表中。
这是我的代码:
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
}
}
我该如何解决这个问题?
您必须将其转换为您的界面
Object instance = clazz.getConstructor().newInstance();
list.add((MyInterface)instance);
也可以写成
MyInterface instance = (MyInterface) clazz.getConstructor().newInstance();
list.add(instance);
您应该将 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);
}
}
但是,请注意,如果 class 没有默认构造函数,这可能会引发异常。