通过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/