反射实例

124 阅读1分钟
package com.example.client_b.ref;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class Main {

    public static void main(String[] args) throws Exception {
        Person person = new Person();
        person.setAge(11);
        person.setName("zhangsan");
        test(person);
    }

    public static void test(Object object) throws Exception {
        Class aclass = object.getClass();

        //private字段反射
        Field ageField = aclass.getDeclaredField("age");
        ageField.setAccessible(true);
        System.out.println(ageField.getInt(object));

        //有参方法反射
        Method method = aclass.getDeclaredMethod("sayHi", String.class);
        method.setAccessible(true);
        System.out.println(method.invoke(object, "张三"));

    }

}

class Person{
    private int age;
    String name;

    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 Person() {
    }

    private String sayHi(String arg){
        System.out.println("hi");
        return "你好" + arg;
    }
}