提问人:JJR 提问时间:11/14/2023 更新时间:11/14/2023 访问量:36
创建从类装入器动态获取的泛型类型的 java ArrayList 实例
Creating a java ArrayList instance of a generic type obtained dynamically from a classloader
问:
我正在尝试创建一个 ArrayList,其泛型类型将从外部 pojo 文件动态派生。
无论如何要完成这项工作?
到目前为止,我有这个——
File pojoJarFile = pojoJarFile = new File("C:/Test/my-pojo.jar");
URLClassLoader genericClassLoader = new URLClassLoader(new URL[]{pojoJarFile.toURI().toURL()});
Class genericClassRef = genericClassLoader.loadClass("com.mypackage.MyClass");
List<genericClassRef> listInstance = new ArrayList<genericClassRef>();
但它在编译时失败了,出现错误 -
java:找不到符号 符号:class genericClassRef 位置: class qmo.kafka.test.harness.QmoKafkaMessageBuilder
答:
0赞
minus
11/14/2023
#1
此代码语法是错误的,同时不清楚您要实现的目标。
您可以写入但不能写入,或者介于<>之间的类名必须是编译时已知的类名,而不是类实例。List<MyClass> myList
List<MyClass.class> myList
Class c = MyList.class; List<c> myList
此外,泛型在运行时被擦除,因此添加这样的未知类型没有实际用处。
如果你加载的类有一些你在编译时知道的通用接口,你可以使用它。
评论
List<Object>