我正在尝试创建一个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
1条答案
按热度按时间ws51t4hk1#
这段代码的语法是错误的,而且,同时也不清楚你想实现什么。
你可以写
List<MyClass> myList
,但不能写List<MyClass.class> myList
或Class c = MyList.class; List<c> myList
,<>之间的类名必须是编译时已知的类名,而不是Class示例。此外,泛型在运行时被擦除,所以像这样添加一个 unknown 类型没有实际用处。
如果你加载的类有一些你在编译时知道的公共接口,你可以使用它。