【发布时间】:2012-09-23 07:21:57
【问题描述】:
我猜我绝对不可能做这样的事情:
Class c = Class.forName("Processor<Integer, String>");
在 Java 中? (当然,我之前定义了处理器)。
【问题讨论】:
-
我认为这里更好的问题是,你为什么认为你需要这样做?也许,有一种不涉及反射的更简单的方法。
-
好的,我确实有一个潜在的用例,它可能还有其他解决方案。我确实有一个处理器类,其功能我想为不同的输入重用,其中输入是从 Avro 模式生成的。我想用不同的、兼容的输入模式调用同一个处理器。
-
可能有一些方法可以通过reflection API 完成类似的事情,但不清楚这是否会很简单。您能否更清楚地说明为什么 Java 的继承模型(以及多态性或其他东西)没有涵盖您想要做的任何事情?另外,您能否详细说明您的问题,以便我们了解您的目标?
-
是的,各种输入类型之间的继承会很好,但我没有。其中一部分是遗产。另一个原因是我们应该支持从 Avro 模式生成的原始类型和更复杂的类型,并且我们不想包装每个 int/String...。此外,我们已经有了处理器的配置机制,如果用户可以重用相同的处理器逻辑,而只是改变配置文件中的实际(兼容)输入类型,那就太好了。
标签: java generics reflection