美文网首页
通过反射访问对象实例域/调用方法

通过反射访问对象实例域/调用方法

作者: mark_x | 来源:发表于2019-10-19 13:51 被阅读0次

public class ReflectTest {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        //1.创建一个Employee对象
        Employee richard = new Employee("Richard", 3500);
        //2.得到Employee对象的Class对象
        Class employeeClass = Employee.class;
        //3.利用Class对象的getDeclaredField()方法, 传入对象实例域的名字, 如"salary", 得到对应域对象的Field对象
        Field salaryField = employeeClass.getDeclaredField("salary");
        //4.利用Field对象, 操作(访问/修改)任意Employee对象的salary域
        salaryField.setAccessible(true);
        salaryField.set(richard, 6500);
        Object obj = salaryField.get(richard);
        System.out.println((Integer) obj);


        System.out.println("-------------------");
        /**
         * 测试 使用反射调用方法
         */
        //1.使用方法名得到对应的方法的Method对象, 注意, 为了准确的找到想要的方法, 需要提供方法的参数类型
        Method setNameMethod = employeeClass.getDeclaredMethod("setName", String.class);
        //2设置访问权限
        setNameMethod.setAccessible(true);
        //3.调用方法, 调用时传入参数
        setNameMethod.invoke(richard, "sam");
        //4.验证通过反射调用的方法, 得到了执行
        System.out.println(richard.getName());
    }
}

相关文章

  • 通过反射访问对象实例域/调用方法

  • Java 反射

    Java反射Java反射API获取Class对象通过反射创建实例对象,调用公共方法通过反射调用私有方法 一.Jav...

  • Java 反射 之 动态代理(InvocationHandler

    动态代理: 通过反射的方式调用真实对象的方法静态代理: 真实对象显式地方法调用 这样理解还是很抽象,还是具体实例代...

  • 类方法和实例方法理解

    1,类方法可以调用类方法。 2,类方法不可以调用实例方法,但是类方法可以通过创建对象来访问实例方法。 3,类方法不...

  • Java反射初始化类调用类中的方法

    1.通过无参构造方法实例化对象 无参构造方法,类 反射调用方式 2. 有参构造函数,对象实例化 有参构造函数类 反...

  • 单例模式

    # 单例模式需要满足: 私有的构造函数 懒加载 线程安全 通过静态方法来访问实例 无法通过反射来实例化对象 无法通...

  • ruby 对象

    1. 注意:对象的实例变量只能被该对象的实例方法访问,实例方法外的代码不能对实例变量进行读写(除非反射机制) 错误...

  • iOS self 和 super区别以及为什么要self = [

    区别: 注意点一:类方法 1、类方法可以调用类方法。2、类方法不可以调用实例方法,但是类方法可以通过创建对象来访问...

  • 【反射/注解/依赖注入】

    反射可以让我们在运行时获取类的属性,方法,构造方法、父类、接口等信息,通过反射还可以让我们在运行期实例化对象、调用...

  • 底层原理:Category

    实例对象的isa指向类对象,当调用对象方法时,通过实例对象的isa找到类对象,最后找到对象方法的实现进行调用,分类...

网友评论

      本文标题:通过反射访问对象实例域/调用方法

      本文链接:https://www.haomeiwen.com/subject/duagmctx.html