首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java反照详解-通过Class调用类中的指定构造函数

2012-08-29 
Java反射详解--通过Class调用类中的指定构造函数演示代码如下:Car.javapackage spjavapublic class Car {

Java反射详解--通过Class调用类中的指定构造函数

演示代码如下:Car.java

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;}}


测试类:

package spjava;import java.lang.reflect.Constructor;/** *  * No: <br> * Description: 测试类 <br> * @author LiYaoHua * Copyright  2012  All rights reserved.<br> * Company  www.riadu.com<br> * */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<T> 对象的数组(即取自此类构造方法的数组)时,此方法的返回类型是 Constructor<?>[]不是 预期的Constructor<T>[]。此少量信息的返回类型是必需的,因为从此方法返回之后,该数组可能被修改以保存不同类的 Constructor 对象,而这将违反Constructor<T>[] 的类型保证。

返回: 表示此类公共构造方法的 Constructor 对象数组 抛出: SecurityException - 如果存在安全管理器s,并满足下列任一条件:调用 s.checkMemberAccess(this, Member.PUBLIC) 拒绝访问该类中的构造方法调用者的类加载器不同于也不是当前类的类加载器的一个祖先,并且对 s.checkPackageAccess() 的调用拒绝访问该类的包从以下版本开始: JDK1.1

 

热点排行