我的问题是我确实有一个在运行时创建、编译和初始化的类。我这样做是将文件写为 TestClass,即文件 f, 然后编译:
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
compiler.run(null,null,null,f.getPath());
之后,我根据这个示例加载我的类并使用我的方法等; http://viralpatel.net/blogs/java-dynamic-class-loading-java-reflection-api/
现在我的问题是我需要这样做:
MyTask<T> m = new MyTask<T>(0,0,0);
T 应该是我动态创建的类,而不是 Integer.class 等。但是我还找不到方法。如果您检查我上面给出的链接中的示例,您将看到我可以以对象形式拥有我的类的实例,并且我可以为我的动态类提供一个类实例。然而,无论我尝试什么,我都找不到解决方案。
它一直说 Class myClass 不能用作类型。那么我如何使用这个动态创建的类作为类型。非常感谢。
最佳答案
没有有用的方法可以在源代码中表达编译时不存在的类型。与使用Object
作为类型参数相比,它不会给你带来任何好处,因为Java泛型提供编译时类型检查,而不是运行时类型检查。
通过创建动态类将实现的接口(interface),并使用接口(interface)类型作为类型参数,可能可以满足您的目的。
关于java - 如何使用动态创建的类作为泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33764463/