• 技术文章 >java >java基础

    java反射是什么

    小妮浅浅小妮浅浅2021-01-13 11:45:56原创6227

    当我们要使用某一种类时,在之前就知道它的使用方法。如果对类的方法不了解,又想要实现其功能时,我们可以借助反射来实现。这种方法在程序运行时才能知道对用的类,下面我们就反射的概念、使用场景、优点进行介绍,然后以Student类为例,在实例中体会反射神奇的用法。

    1.反射概念

    反射就是在运行时才知道要操作的类是什么,并且可以在运行时获取类的完整构造,并调用对应的方法。

    2.使用场景

    IDE自动提示功能,对象(提示:属性、方法)

    不知道类或者对象的具体信息,应该使用反射来实现。

    比如类的名称放在XML文件中,属性和属性值放在XML文件中,需要在运行时读取XML文件,动态获取类的信息。

    3.优点

    通过反射,java可以动态的加载未知的外部配置对象,临时生成字节码进行加载使用,使代码更灵活,极大地提高应用的扩展性

    4.实例

    先写一个Student类

    获取Class对象的三种方式

    Object ——> getClass();

    任何数据类型(包括基本数据类型)都有一个“静态”的class属性

    通过Class类的静态方法:forName(String className)(常用)

    Object类中的getClass方法、因为所有类都继承Object类。从而调用Object类来获取

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    package fanshe;

    /**

     * 获取Class对象的三种方式

     * 1 Object ——> getClass();

     * 2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性

     * 3 通过Class类的静态方法:forName(String  className)(常用)

     *

     */

    public class Fanshe {

        public static void main(String[] args) {

            //第一种方式获取Class对象 

            Student stu1 = new Student();//这一new 产生一个Student对象,一个Class对象。

            Class stuClass = stu1.getClass();//获取Class对象

            System.out.println(stuClass.getName());

             

            //第二种方式获取Class对象

            Class stuClass2 = Student.class;

            System.out.println(stuClass == stuClass2);//判断第一种方式获取的Class对象和第二种方式获取的是否是同一个

             

            //第三种方式获取Class对象

            try {

                Class stuClass3 = Class.forName("fanshe.Student");//注意此字符串必须是真实路径,就是带包名的类路径,包名.类名

                System.out.println(stuClass3 == stuClass2);//判断三种方式是否获取的是同一个Class对象

            } catch (ClassNotFoundException e) {

                e.printStackTrace();

            }

             

        }

    }

    以上就是java反射的基础知识介绍,当我们对某一种类的方法不明确时,可以借用反射的方法来实现类的功能。对于一些刚学java的初学者来说,反射的使用非常友好,可以快速调用类方法。

    专题推荐:java反射
    上一篇:java web是什么 下一篇:java实例化是什么意思

    相关文章推荐

    • java是什么• java是什么意思• Java是什么软件• java是什么语言• java接口是什么• java web是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网