Вы можете найти его, просто введя List.class
.Например:
import java.util.*;
import java.lang.reflect.*;
public class Test {
public static void main(String[] args) throws Exception {
Class<?> clazz = MyClass.class;
Constructor<?> ctor = clazz.getConstructor(List.class);
ctor.newInstance(new Object[] { null });
}
}
Если вам нужно проверить универсальные типы параметров, вы можете использовать getGenericParameterTypes
и проверить Type[]
, который он возвращает.Например:
Type[] types = ctor.getGenericParameterTypes();
System.out.println(types[0]); // Prints java.util.List<Structure>
Вам не нужно указывать аргумент типа при вызове getConstructor
, потому что вы не можете перегрузить конструктор, используя параметры с просто параметрами другого типа,Эти типы параметров будут иметь одинаковое стирание типа .Например, если вы попытаетесь добавить другой конструктор с этой подписью:
public MyClass(List<String> structures)
, вы получите ошибку, подобную этой:
MyClass.java: 7: name clash:MyClass(java.util.List<java.lang.String>)
и MyClass(java.util.List<Structure>)
имеют одинаковое стирание