案例:通过反射获取方法并使用

案例:通过反射获取方法并使用

需求:通过反射获取类的setter方法,使用该方法为属性赋值

分析:

​ A. setter方法的方法名由set和属性名(首字母大写)组成:

     ```java

举例:setName,setAge
```

​ B. setter方法有且只有一个参数,参数类型为属性的类型:

举例:setName(String name),setAge(int age)

​ C. setter方法为public 修饰的方法,反射获取该方法使用:

getMethod(String,Class<?>...);

​ D. 根据上述分析分别为属性name、age赋值并使用

package cn.itcast.demo32;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

public class ReflectDemo01 {
    public static void main(String[] args) throws Exception {
        //需求:通过反射获取类的setter方法,使用该方法为属性赋值
        //1.通过反射获取Student类的字节码文件对象
        Class clazz = Class.forName("cn.itcast.demo32.Student");
        //2.通过反射获取Student类的构造方法,并创建该类的对象(调用成员方法势必要有对象)
        Constructor con = clazz.getConstructor();
        Student stu = (Student) con.newInstance();//学生对象创建完成

        //3.获取到指定的setName()方法,给Student对象设置值
        Method method1 = clazz.getMethod("setName", String.class);
        //调用此方法
        method1.invoke(stu,"豆豆");


        //4.打印学生对象
        System.out.println(stu);

    }
}

package cn.itcast.demo32;
//标准的JavaBean类  学生类
public class Student {
    //成员变量
    private String name;

    //空参构造
    public Student(){

    }
    //带参构造
    public Student(String name){
        this.name = name;
    }
    //getXxx和setXxx()方法
    public String getName(){
        return name;

    }
    public void setName(String name){
        this.name = name;
    }
    //toString()方法,用来打印该对象的各个属性值的


    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                '}';
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值