演示代码如下:Car.java
[html]
package spjava;
public class Car {
private String brand;
private String color;
private int maxSpeed;
public Car(){
}
public Car(String brand){
this.brand = brand;
}
public Car(String brand,String color){
this.brand = brand;
this.color = color;
}
public Car(String brand, String color, int maxSpeed){
this.brand = brand;
this.color = color;
this.maxSpeed = maxSpeed;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getMaxSpeed() {
return maxSpeed;
}
public void setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
}
}
测试类:
[java]
package spjava;
import java.lang.reflect.Constructor;
/**
*
* No:
* Description: 测试类
* @author LiYaoHua
* Copyright 2012 All rights reserved.
* Company www.riadu.com
>
*
*/
public class Test {
public static void main(String[] args) {
Class< > clazz = null;
try {
clazz = Class.forName("spjava.Car");
} catch (Exception e) {
// TODO: handle exception
}
Car car1 = null;
Car car2 = null;
Car car3 = null;
Car car4 = null;
//取得所有构造函数
Constructor< > cons[] = clazz.getConstructors();
try {
car1 = (Car) cons[1].newInstance();
//国产不易啊来个国产的
car2 = (Car) cons[2].newInstance("红旗");
car3 = (Car) cons[0].newInstance("红旗","红色");
car4 = (Car) cons[3].newInstance("红旗","红色",200);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(car1);
System.out.println(car2);
System.out.println(car3);
System.out.println(car4);
}
}
这个主要利用了Class的getConstructors方法 JDK中是这样介绍的:
getConstructors
public Constructor< >[] getConstructors()
throws SecurityException
返回一个包含某些 Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。如果该类没有公共构造方法,或者该类是一个数组类,或者该类反映一个基本类型或 void,则返回一个长度为 0 的数组。 注意,此方法返回 Constructor
返回:www.2cto.com
表示此类公共构造方法的 Constructor 对象数组
抛出:
SecurityException - 如果存在安全管理器 s,并满足下列任一条件:
调用 s.checkMemberAccess(this, Member.PUBLIC) 拒绝访问该类中的构造方法
调用者的类加载器不同于也不是当前类的类加载器的一个祖先,并且对 s.checkPackageAccess() 的调用拒绝访问该类的包
作者:struggle_lyh