到底什么是反射
程序员文章站
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);
上面这句是创建了一个构造器然后,再用这个构造器去创建实例。
可是我有个疑问,这么简单的东西,很多书为什么会花那么长的篇幅去介绍呢???
是我还有很多东西没学,还是我理解的不对。
上一篇: 到底什么是JavaBean
下一篇: 聚类算法之LDA