请教一个反射的问题
 阅读了 <<java 网络编程>>中的第10章,有几个问题 请教
您的第一个例子ReflectTester,中间有这么一段代码 Object objectCopy = classType.getConstructor(new Class[] {})
.newInstance(new Object[] {});
您是这样解释的

(2)通过默认构造方法创建一个新的对象:
Object objectCopy=classType.getConstructor(new Class[]{}).newInstance(new Object[]{});
以上代码先调用Class类的getConstructor()方法获得一个Constructor 对象,它代表默认
的构造方法,然后调用Constructor对象的newInstance()方法构造一个实例。

这样写,肯定不是错的
我很疑问,既然是默认classType.getConstructor()就可以了,为何要加一个new Class[]{}的参数。
我看了Java的API

Constructor getConstructor(Class[] parameterTypes) 
          Returns a Constructor object that reflects the specified public constructor of the class represented by this Class object. 

实在是让人疑惑,java为何要这样设计,因为这里就纯粹传入new Class[]{}作为参数,而之后在不做任何处理,
等于是一种固定格式??既然是固定格式为何不去掉呢?
其实newInstance(new Object[]{}) 也是这个特点
请大虾解释一下,感谢哦源程序如下
import java.lang.reflect.*;public class ReflectTester {
public Object copy(Object object) throws Exception {
// 获得对象的类型
Class classType = object.getClass();
System.out.println("Class:" + classType.getName());
// 通过默认构造方法创建一个新的对象
Object objectCopy = classType.getConstructor(new Class[] {})
.newInstance(new Object[] {});
// 获得对象的所有属性
Field fields[] = classType.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
String firstLetter = fieldName.substring(0, 1).toUpperCase();
// 获得和属性对应的getXXX()方法的名字
String getMethodName = "get" + firstLetter + fieldName.substring(1);
// 获得和属性对应的setXXX()方法的名字
String setMethodName = "set" + firstLetter + fieldName.substring(1);
// 获得和属性对应的getXXX()方法
Method getMethod = classType.getMethod(getMethodName,
new Class[] {});
// 获得和属性对应的setXXX()方法
Method setMethod = classType.getMethod(setMethodName,
new Class[] { field.getType() });
// 调用原对象的getXXX()方法
Object value = getMethod.invoke(object, new Object[] {});
System.out.println(fieldName + ":" + value);
// 调用拷贝对象的setXXX()方法
setMethod.invoke(objectCopy, new Object[] { value });
}
return objectCopy;
} public static void main(String[] args) throws Exception {
Customer customer = new Customer("Tom", 21);
customer.setId(new Long(1));
Customer customerCopy = (Customer) new ReflectTester().copy(customer);
System.out.println("Copy information:" + customerCopy.getName() + " "
+ customerCopy.getAge());
}
}class Customer { // Customer类是一个JavaBean
private Long id; private String name; private int age; public Customer() {
} public Customer(String name, int age) {
this.name = name;
this.age = age;
} public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
}
}