java - 如何使用动态创建的类作为泛型?

标签 java generics dynamic

我的问题是我确实有一个在运行时创建、编译和初始化的类。我这样做是将文件写为 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/

相关文章:

java - Jsoup 发布 : Defining a selected option to return HTML?

java - JTable 构造函数可以接受数组以外的其他数据结构吗?

Java 警告 : Varargs method could cause heap pollution from non-reifiable varargs parameter

jquery - 使用 jquery 创建动态列表

java - 从日历中获取日期之前的 18 年

java - 在 Java 中遍历 boolean 数组

c# - 互操作类作为泛型类型参数有什么问题?

c# - 具有两个不相等(唯一)类型的泛型类

facebook - 在 fancybox 共享按钮中动态更改 facebook og 图像

使用事件处理程序生成 DOM 元素的 Javascript 外部函数不输出 html