• 高频面试八股文用法篇(六) 说说反射及其作用


    目录

    什么是反射?

    反射的作用

    反射的优缺点

    反射的用途


    什么是反射?

     

    • 动态语言。 当程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言。
    • Java 并不是动态语言,但是它却又一个非常突出的动态相关的机制,俗称:反射。

    反射允许运行中的 Java 程序获取自身的信息,并且可以操作类和对象的内部属性。

    程序中一般的对象类型都是在编译期就确定下来的,而Java 反射机制可以动态的创建对象并调用其属性,这样对象的类型在编译期是未知的。

    反射的核心:是 JVM 在运行时 才动态加载类或调用方法或属性,不需要事先(写代码的时候或编译期)知道对象是谁。

    java反射就是在运行状态中:

    • 对于任意一个类,都能够知道这个类的所有属性和方法;
    • 对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。

    这也是Java被视为动态语言的一个关键性。
     

    反射的作用

     

    • 在运行时构造任意一个类的对象;
    • 在运行时判断任意一个对象所属的类;
    • 在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法);
    • 在运行时调用任意一个对象的方法

     

    比如:通过反射生成对象的实例主要有两种方式:

    方法一:使用Class对象的newInstance()方法来创建Class对象对应类的实例

    方法二:先通过Class对象获取指定的Constructor对象,再调用Constructor对象的newInstance()方法来创建实例:可以用指定的构造器构造类的实例

    创建数组(方法一)

    1. Class classType = Class.forName("java.lang.String");
    2. Object array = Array.newInstance(classType, 10);

    反射的优缺点

    优点

    • 可以在程序运行的过程中,操作这些对象。

    • 可以解耦,提高程序的可扩展性。

    缺点

    • 反射会额外消耗一定的系统资源,因此如果不需要动态地创建一个对象,那么就不需要用反射。
    • 另外,反射调用方法时可以忽略权限检查,因此可能会破坏封装性而导致安全问题

    反射的用途

    反射最重要的用途就是开发各种通用框架

    1.各种框架:(spring,struts....)用反射,运行时动态加载需要加载的对象。

    • Spring 框架的 IOC 基于反射创建对象和设置依赖属性。

    • Spring MVC 的请求调用对应方法,也是通过反射。

    • JDBC 的 Class#forName(String className) 方法,也是使用反射。

    2.各种IDE开发工具:当我们输入一个对象或类并想调用它的属性或方法时,一按点号,编译器就会自动列出它的属性或方法,这里就会用到反射。

  • 相关阅读:
    pc端和移动端hover的冲突解决
    vue使用WEB自带TTS实现语音文字互转
    分布式任务调度XXL-JOB-第二章-SpringBoot集成XXL-JOB
    北汇信息继续扩大V2X测试服务,扎根重庆,服务全国
    【C++】继承(C++重中之重)(学习与复习兼顾)
    【Kafka二】架构深入
    CCC数字钥匙设计【NFC】 --车主配对流程介绍
    Clean-label Backdoor Attack against Deep Hashing based Retrieval论文笔记
    8.11 Day39----框架面试题
    Android13 客制化U盘挂载路径
  • 原文地址:https://blog.csdn.net/wodeyijia911/article/details/131063850