Есть ли способ в Java (или в Java библиотеке) получить Constructor
из Class
, который будет вызываться для заданных аргументов / типов аргументов (не требующих точного аргумента и типа параметра совпадения, вместо этого включая супертипы)?
т.е. я знаю о Class#getConstructor(Class<?>)
, но это возвращает только точные совпадения.
например, следующий код выдает NoSuchMethodException
, тогда как я хочу получить Constructor
для A(CharSequence)
, поскольку это то, что было бы вызвано, если бы я запустился, например, A("")
:
public class A {
public A(Object o) {}
public A(CharSequence cs) {}
public static void main(String[] args) throws Exception {
Constructor c = A.class.getConstructor(String.class);
c.newInstance("");
}
}
Я полагаю, что такой метод также потенциально может вызвать исключение, указывающее, что несколько конструкторов совпадают, поэтому он не может выбирать без указания типов аргументов c (как при явном приведении).
Я также хотел бы найти эту функцию для Method
s.
Спасибо.