首页 > 编程语言 >Java反射

Java反射

时间:2022-10-27 21:25:37浏览次数:52  
标签:反射 Java 对象 包装 任意 Class

Java反射作用原理:

反射机制在运行时,对于任意一个类,都能够知道这个类的所有属性和方法:

对于任意个对象,都能够调用它的任意一个方法,在Java中,只要给定类的名字,

就可以通过反射机制来获得类的所有信息

 

反射的实现方式:

  Class.forName("类的路径");

  类名.class

  对象名.getClass()

  基本类型的包装类,可以调用包装类的Type属性来获取该包装类的Class对象

反射机制的优缺点:

  优点:

  能够运行时动态获取类的实例,提高灵活性

  与动态编译结合

  缺点:

  使用反射

  性能较低,需要解析字节码,将内存中的对象进行解析(编译器不会对代码优化,写成什么样就是什么样)

  解决方案:

    通过setAccessible(true)关闭JDK的安全检查来提升反射速度;

    多次创建一个类的实例,有缓存会快很多

    ReflectASM工具类,通过字节码生成的方式会加快反射速度,但相对不安全,破坏了封装性

(因为通过反射可以获得私有方法和属性)

 

标签:反射,Java,对象,包装,任意,Class
From: https://www.cnblogs.com/doremi429/p/16833755.html

相关文章

  • 学习java第一天
    关键字public权限修饰符表示公共的,任何地方都可以用class类的修饰符。static表示静态的void表示没有返回结果main主方法的名字,main方法是程序的入......
  • javaSE基础-比较器
    Java比较器1、java对象正常情况下只能进行==或!=,不能进行比较大小。若需要比较对象的大小,需要实现两个接口中的任何一个:Comparable或Comparator2、Comparable接口......
  • 反射Reflection
    1.1简介反射是框架设计的灵魂将类的各个组成部分封装为其他对象Source源代码阶段->Class类对象阶段->Runtime运行时阶段1.2获取Class对象Class.forName("全类名......
  • JavaScript数组相关操作方法以及数组扩展与修复
    JavaScript一些常用的操作方法join()将数组中所有元素转化为字符串并连接一起,返回最后生成的字符串。可以指定分隔符;vararr=[23,56,78,0,98,190];consol......
  • JavaScript设计模式-行为设计模式
    行为设计模式用于不同对象之间职责划分、算法抽象,包含:模板方法模式、观察者模式、状态模式、策略模式、职责链模式、命令模式、访问者模式、中介模式、备忘录模式、迭代器模......
  • JavaScript设计模式-结构型设计模式
    结构型设计模式关注如何把类或者对象组合成为更大、更复杂的结构,简化设计。包含:外观模式、适配器模式、代理模式、装饰者模式、桥接模式、组合模式、享元模式外观模式(套餐服......
  • JavaScript中的
    "=="和"==="运算符使用于比较两个值是否相等。都允许任意类型的操作数,若操作数相等则返回true,否则返回false。"===":严格相等运算符(恒等运算符),用来检测两个操作数是......
  • JavaScript中易忘的运算符
    eval()JavaScript通过全局函数eval()可以解释运行由JavaScript源码组成的字符串并且产生一个值。eval("25*4");//==100eval()是一个原本是一个函数,但是已经被当成运算符来......
  • JavaScript函数进阶
    JavaScript中函数是第一类对象。函数与对象共存,函数也可以被视为其他人一类型的JavaScript对象。函数能被变量引用、能以字面量形式声名,甚至可以作为函数参数进行传递。Java......
  • JavaScript数组的push()等方法的使用
        数组是值得有序集合。每个值在数组中有一个位置,用数字表示,叫做索引。JavaScript数组是无类型的:数组元素可以是任何类型,而且同一个数组中可以存在不同类型元素,甚......