Java之反射常用操作

  • 获取Class对象

方式1:

Class userClass =  Class.forName("com.crown.reflect.User");

方式2: 

 Student stu1=new Student();//这一new 产生一个Student对象,一个Class对象。
 Class stuClass=stu1.getClass();//获取Class对象  

方式3:

Class stuClass2=Student.class;
  • 获取构造函数

Class对象提供两个有重载的获得构造器Constructor 对象的方法,一个接受一个可变参数的类型为Class类型的参数,用来接受多个参数类型为Class,

1.有参的构造

Constructor constructor =null;
try {
	constructor = c.getConstructor(String.class);
} catch (Exception e) {
	// TODO: handle exception
	e.printStackTrace();
}

2.无参数的构造

Class userClass =  Class.forName("com.crown.reflect.User");
//			//获得一个类的的构造器
Constructor constructor = userClass.getConstructor();
  • 创建对象

1.无参数的构造

User user=(User) constructor.newInstance();

2.无参数的构造

User user =	 (User)constructor.newInstance("crown");
	public User(String username) {
		// TODO Auto-generated constructor stub
		this.userName= username;
	}
  • 执行方法

1.无参数的方法

Method method = class1.getDeclaredMethod("getUser", null);
method.invoke(class1.newInstance(), null);

2.有参数的方法

Method method = class1.getDeclaredMethod("getUser", String.class,String.class);
method.invoke(class1.newInstance(), "crown","echo");

3.执行私有方法

Method method=userClass.getDeclaredMethod("printName",null);
method.setAccessible(true);
method.invoke(user, null);

猜你喜欢

转载自blog.csdn.net/qq_24532581/article/details/86678763