我个人对反射的理解

person中的内容

package cn.itcast_01;


public class person {
private String name;
int age;
public String address;

public person(String name,int age){
this.name=name;
this.age=age;
}

public person(){
System.out.println("无参数的构造函数");
}

public person(String name,int age,String address){
this.name=name;
this.age=age;
this.address=address;
}

private  person(String name){
this.name=name;


}

private void show(String name){
System.out.println("show" + name);



}

public String cat(String name,int i){
return name +"-------" + i;

}
@Override
public String toString() {
return "person [name=" + name + ", age=" + age + ", address=" + address + "]";
}
}


反射

A 构造方法
//person p = new person("caobo")相当于下面的两步
//获取的构造函数对象
Constructor con = c.getConstructor();
//通过构造函数对象生成真正的对象,根据你给的几个变量值找到对应的构造方法,obj相当于p
Object obj = c.newInstance("caobo");

B 成员变量
// 获取所有的成员变量
Field[] fields = c.getFields();
// 获取单个的成员变量
// 获取address并对其赋值
Field addressField = c.getField("address");
// 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
addressField.set(obj, "北京"); // 给obj对象的addressField字段设置值为"北京"
//查看这个对象的值
System.out.println(obj);

C 方法
person p = new person();
p.show();

相当于下面的

// 获取单个方法并使用
// public void show(),我们自己在person中定义的方法,没有参数
// public Method getMethod(String name,Class<?>... parameterTypes)
// 第一个参数表示的方法名,第二个参数表示的是方法的参数的class类型,
Method m1 = c.getMethod("show");//获取没有参数的方法实例
Method m1 = c.getMethod("show",String.class);//获取有一个String类型参数的方法实例

// 返回值是Object接收,第一个参数表示对象是谁,第二参数表示调用该方法的实际参数,obj相当于p, 也就是person p = new person("caobo")
相当于p.show();
m1.invoke(obj); // 调用obj对象的m1方法
相当于p.show("caobo");
m1.invoke(obj,"caobo");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值