public static void main(String[] args) throws Exception {
int n=100;
String str = "I love java";
String[] sArr = new String[]{"xiaoming","xiaohong","zhangsan"};
List
for(int i=0;i<3;i++){
list.add(i);
}
Class
//获取默认的构造方法对象
Constructor
//运行不带参数的构造方法,创建对象实例
DataType dataType = cons.newInstance(new Object[]{});
//获取所有的字段
Field[] fields = clazz.getDeclaredFields();
//为每一个字段赋值
for(Field field : fields){
//首先设置该字段的可访问性
field.setAccessible(true);
if(field.getType().getSimpleName().equals("int")){
field.set(dataType, n);
}else if(field.getType().getSimpleName().equals("String")){
field.set(dataType, str);
}else if(field.getType().getSimpleName().equals("String[]")){
field.set(dataType, sArr);
}else if(field.getType().getSimpleName().equals("List")){
field.set(dataType, list);
}
}
//获取toString方法
Method toStringMethod = clazz.getMethod("toString", new Class[]{});
Object result = toStringMethod.invoke(dataType, new Object[]{});
System.out.println(result);
}
}
输出结果:int n=100 String str=I love java String[] sArr=xiaoming xiaohong zhangsan List
如果用带参数的构造方法来完成相同的功能,
[java]
//获取带参数的构造方法对象
Constructor
DataType dataType2 = cons2.newInstance(new Object[]{n,str,sArr,list});
Object result2 = toStringMethod.invoke(dataType2, new Object[]{});
System.out.println(result2);
//获取带参数的构造方法对象
Constructor
DataType dataType2 = cons2.newInstance(new Object[]{n,str,sArr,list});
Object result2 = toStringMethod.invoke(dataType2, new Object[]{});
System.out.println(result2);
输出结果:int n=100 String str=I love java String[] sArr=xiaoming xiaohong zhangsan List
[java]