天天看點

反射(二)Class類,Method類,Field類,反射獲得帶參數的對象

package com.ygl.reflect;



 import java.lang.reflect.Constructor;

 import java.lang.reflect.InvocationTargetException;



 public class ReflectTest {

 public Object  copy(Object  object) throws IllegalArgumentException, InstantiationException, IllegalAccessException, InvocationTargetException{

//使用對象的getClass()方法,前提先有對象執行個體

Class<?> clazz=object.getClass();

System.out.println(clazz.getName());//com.ygl.reflect.Customer

try {

/*
 //無參的構造器

Constructor  cons=clazz.getConstructor(new Class[]{});

//無參的執行個體

Object obj=cons.newInstance(new Object[]{});

System.out.println(obj);

//上面兩個方法等價于

Object obj2=clazz.newInstance();//隻能構造無參的對象

*/


Constructor  cons=clazz.getConstructor(new Class[]{String.class,int.class});

Object obj=cons.newInstance(new Object[]{"ygl",25});

} catch (SecurityException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (NoSuchMethodException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}



return object;


 }



 public static void main(String[] args) {

ReflectTest  reflectTest=new ReflectTest();

try {

reflectTest.copy(new Customer());

} catch (IllegalArgumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InstantiationException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IllegalAccessException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (InvocationTargetException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println();

 }

 }





 class Customer{

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;

}

 }