//想直接获得下标是不可能的,但是可以通过获取形参类型数组做出具体的判断 代码如下 person类
static void cons(String name,int age,char sex) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{
//获得构造器数组
Constructor[] cos = Person.class.getConstructors();
List<Person> ls = new ArrayList<>();
Person p = null; //我的自定义Person 有3个属性 String name , int age, char sex 3个构造方法 无参 全参 一个参数
for(Constructor c : cos){ //foreach 循环
Class[] classes = c.getParameterTypes();
//这个地方你甚至可用class反射属性 而搞出相应的值 你可以在方法添加形参 这样子就可以动态设置数据了
if(classes.length==3){
p = (Person) c.newInstance(name,age,sex);
}else if(classes.length==1){
//如果是Stirng类型的
if(classes[0]==String.class){
p = (Person) c.newInstance(name);
}
}else{
p = (Person) c.newInstance();
}
ls.add(p);
}
for(Person ps :ls ){
System.out.println(ps);
}
}
|