美文网首页
26、反射(二)

26、反射(二)

作者: 爱学习的代代 | 来源:发表于2021-04-09 09:11 被阅读0次

反射除了获取属性,也可以获取方法,调用方法。

  1. 获取实例方法:Method method = clazz.getMethod("describe");
    2.调用实例方法:method.invoke(v);
package day14;

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

public class TestReflect {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
        MerchandiseV2 v = new MerchandiseV2(1,"床单",100, 50, 30);


//      另一种获取Class类的方法:
        Class clazz = MerchandiseV2.class;

//      方法
        Method method = clazz.getMethod("describe");
        method.invoke(v);
        v.describe();



    }
}

运行结果:


image.png
二、如何访问私有的方法呢?
  1. 通过clazz.getDeclaredMethod("describe") 获取声明的方法
  2. 通过method.setAccessible(true) 设置方法可以调用

属性的访问同理。


image.png
三、通过反射和直接通过实例变量获取属性和方法的差异?

获取的效率差异:反射访问慢于直接获取。
当对于方法的执行时间来说两者是一样的。
建议:获取属性或者方法的时候,将该对象保存起来,可以从很大程度上减少效率的差异。
可以类比理解:直接访问就好比知道了你去找一个地方知道了坐标,直接飞过去。通过反射的话,相当于通过一步一步左转,右转,直行到达。虽然慢了,同样可以达到目的地。

相关文章

  • 26、反射(二)

    反射除了获取属性,也可以获取方法,调用方法。 获取实例方法:Method method = clazz.getMe...

  • reflect.go包学习_之二 指针操作提高反射性能 反射应用

    reflect.go包学习_之二 指针操作提高反射性能 反射应用 反射创建实例 反射信息、反射调用方法、反射修改值...

  • 反射(二)

    反射(二) 通过栗子来更好的理解反射,以及对反射技术进行应用。 首先,整两个model——car.java和Ben...

  • 反射三定律

    反射第一定律:反射可以将interface类型变量转换成反射对象 反射第二定律:反射可以将反射对象还原成inter...

  • 反射学习二——反射

    java高级之反射 一、反射入门 在方法区存在这么一些对象,叫做类对象,他们表述了我们写的所有的类,当我们new对...

  • 一见你,微醺就袭来

    2019年3月26日 星期二 晴 每次见你 或明或暗 或折射或反射的光影 晕了周围与眼睛 犹如微醺时 杯中的琼浆玉...

  • Java一反射

    目录 一、什么是反射 二、反射的作用和应用场景 三、反射的优缺点 四、使用反射(获取Class对象、获取类的构造方...

  • go基础——反射二(反射使用)

    内容 1 获取接口类型值2 修改接口类型值3 反射调用函数4 反射调用方法5 reflect包api使用 先回顾一...

  • Android 系统复习面试系列(二)反射原理和 Android

    Android 系统复习面试系列(二)反射原理和 Android 类加载核心 反射 什么是反射 指在运行状态中,对...

  • 8 涂层+全部

    涂层可以理解成第二层反射 计算优先级 1 涂层 2 反射 3 折射 4反射 5 散射 ——————————————...

网友评论

      本文标题:26、反射(二)

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