反射——通過反射獲取帶參數的構造方法並使用

//創建Tercher模型
public class Tercher{
private String name;
private String homntown;
private double height;
public String getName(){
return name;
}
public void setName(String name){
this.name=name;
}
public String getHometown(){
return homntown;
}
public void setHomntown(String homntown){
this.homntown=homntown;
}
public Teacher(){}
public Teacher(String name,String homntown){
super();
this.name=name;
this.homntown=homntown;
}
public Teacher(String name,double height){
super();
this.name=name;
this.height=height;
}
public String toString(){
return "Teacher[name="+"name"+",homntown="+homntown+",height="+height+"]";
}
}

//主方法
//如果要用反射,先要獲取字節碼對象
public static void main(String[] args){
//獲取字節碼對象
Class cls=Teacher.class;
//1.獲取無參構造方法,getConstructor()參數可變,根據不同的參數對應不同的構造函數
Constructor c1=cls.getConstructor();
//通過無參構造創建對象,neInstance()參數可變,對應上面的構造方法
Teacher teacher1=(Teacher) c1.neInstance();
System.out.println(teacher1);

//2.創建有參的構造方法,都是String類型的構造方法
Constructor c2=cls.getConstructor(String.class,String.class);
Teacner teacher2=(Teacher)c2.neInstance("szl","十堰");
System.out.println(teacher2);

//3.創建有參構造方法,參數是string和double類型的構造
Constructor c3=cls.getConstructor(String.class,double.class);
Teacner teacher3=(Teacher)c3.neInstance("szl",1.75);
System.out.println(teacher3);

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章