创建从类加载器动态获取的泛型类型的java ArrayList示例

rn0zuynd  于 2023-11-15  发布在  Java
关注(0)|答案(1)|浏览(129)

我正在尝试创建一个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:cannot find symbol symbol:class genericClassRef location:class qmo.Kafka.test.harness.QmoKafkaMessageBuilder

ws51t4hk

ws51t4hk1#

这段代码的语法是错误的,而且,同时也不清楚你想实现什么。
你可以写List<MyClass> myList,但不能写List<MyClass.class> myListClass c = MyList.class; List<c> myList,<>之间的类名必须是编译时已知的类名,而不是Class示例。
此外,泛型在运行时被擦除,所以像这样添加一个 unknown 类型没有实际用处。
如果你加载的类有一些你在编译时知道的公共接口,你可以使用它。

相关问题