欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

到底什么是反射

程序员文章站 2022-05-19 13:16:49
...

到底什么是反射,之前我只知道java反射是学习SSH等框架必须使用的。

package refllect;

import java.lang.reflect.Constructor;

import domain.User;

public class ReflectTest {
	public static void main(String[] args) throws Exception {
		Class clazz = User.class;
		Object o = create(clazz);
		System.out.print(o);
	}
	
	static Object create(Class clazz) throws Exception{
		Constructor c = clazz.getConstructor(String.class);
		Object o = c.newInstance("new name");
		return o;
	}
}
package domain;

import java.util.Date;

public class User {
	public User() {
	}
	public User(String name) {
		this.name = name;
	}
	private int id;
	private String name;
	private Date birthday;
	private float money;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}
	public float getMoney() {
		return money;
	}
	public void setMoney(float money) {
		this.money = money;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + " birthday=" + birthday
				+ " money=" + money + "]";
	}
}

  

 从书上第一个例子来看,反射就是在一个方法内,在不知道构建什么类的实例的情况下,构造一个类的实例,说起来有的绕,但感觉这东西好基础。

其实构建实例就是这么简单的一句

Object o = clazz.newInstance();

 不过这只能够实例化,无参构造方法的类,也就是默认的。

Constructor c = clazz.getConstructor(String.class);

 上面这句是创建了一个构造器然后,再用这个构造器去创建实例。

可是我有个疑问,这么简单的东西,很多书为什么会花那么长的篇幅去介绍呢???

是我还有很多东西没学,还是我理解的不对。