java - 使用 Java 反射,如何获取指定构造函数参数的派生类的类的构造函数?

标签 java reflection clojure

通过Java反射,可以通过getConstructor(klass, args)获取构造函数。

但是,当我们将构造函数签名中指定的类的派生类作为 args 传递时,它会失败。如何克服这个问题?

例如,

HashSet.class.getConstructor(new Class[]{ HashSet.class });

失败。而

HashSet.class.getConstructor(new Class[]{ Collection.class });

成功了。

我正在寻找可以在 clojure 中轻松使用的东西。因此,我更愿意开箱即用,而不必添加用户定义的函数。

任何想法,如何解决这个问题?

最佳答案

HashSet 没有 没有HashSet(HashSet) 构造函数,所以当您要求时自然不会得到一个。您必须通过与赋值兼容的类(至少循环遍历父类(super class),可能还有已实现的接口(interface)和它们的父类(super class))来找到一个。

关于java - 使用 Java 反射,如何获取指定构造函数参数的派生类的类的构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213708/

相关文章:

java - Java:读取时文件损坏的每一行的第一个字母

java - 创建 POJO 并从 Map<String, String> 填充它

clojure - 如何在函数-main中要求命名空间?

macros - 向 Clojure 的 defrecord 构造函数添加功能的推荐宏?

java - GWT:使用 GWT 构建 web2.0 界面的最佳实践是什么?

java - 比较两个长度不等的列表并删除部分匹配项?

java - 从 java.util.List<SomeType> 获取类

parsing - 获取有关 Groovy 函数的信息(名称、签名、主体代码)

http - 使用 Noir 的基本 HTTP 身份验证

java - 在 Android 应用程序中使用 DrawerLayout 时手势不起作用