JAVA反射

以下为思维导图
在这里插入图片描述
幕布思维导图地址

//获取构造方法
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

public class Text13 {
    public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class<Students> c = Students.class;//创建学生类的Class对象
        
        Constructor<Students> con = c.getConstructor(String.class,int.class,String.class);//获取构造方法
        
        Object obj = con.newInstance("Hello World",01,"河北");//构造对象
        
        System.out.println(obj);//输出
    }
}
//获取成员变量
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;

public class TextDemo {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException, NoSuchFieldException {
        Class<Students> c = Students.class;//创建学生类的Class对象

        Constructor<Students> con = c.getConstructor();
        Object students = con.newInstance();//创建实例

        Field nameField =c.getField("name");//获取成员变量
        Field ageField = c.getField("age");
        Field address = c.getField("address");



        nameField.set(students,"Hello World");//设置成员变量
        ageField.set(students,10);
        address.set(students,"河北");

        System.out.println(students);//输出
    }
}
//获取成员方法
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class MethodDemo {
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
        Class<?> c = Class.forName("路径");//创建学生类的Class对象

        Constructor<?> con = c.getConstructor();
        Object obj = con.newInstance();//创建实例
        
        Method method1 = c.getMethod("method1");
        method1.invoke(obj);//获取方法并运行,无参数无返回值


        Method method2 = c.getMethod("method2",String.class);
        method2.invoke(obj,"112");//获取方法并运行,带参

        Method method3 = c.getMethod("method3");
        System.out.println(method3.invoke(obj));//获取方法并运行,有返回值
    }
}
//所有类用到的Students类
public class Students {
    public int age;
    public String name;
    public String address;

    public Students() {
    }

    public Students(int age, String name, String address) {
        this.age = age;
        this.name = name;
        this.address = address;
    }
    public void method1(){
        System.out.println("method1被调用");

    }
    public void method2(String a){
        System.out.println("method2被调用,参数是"+a);
    }
    public String method3(){
        return "method3被调用";

    }
    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Students{" +
                "age=" + age +
                ", name='" + name + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值