专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 Java基础学习:Java反射机制学习

Java基础学习:Java反射机制学习

更新时间:2020-04-15 13:56:39 来源:动力节点 浏览1900次

    1.背景:spring中大量使用了Java的反射特性进行IOC,有必要了解Java反射机制

    2.基本概念:反射是Java语言的一个特性,允许程序在运行时进行自我检查和内部成员的操作。如下代码

Java基础学习:Java反射机制学习g

    3.反射的优点与缺点:反射是一种动态编译(在运行时确定类型,绑定对象),与之对应的是静态编译(在编译时确定类型,绑定对象)。反射能发挥Java的灵活性,降低类之间的耦合性。在JavaEE编程中经常用到,尤其Spring的IOC就是使用了Java的发射这一特性。虽然反射能很好的发挥Java的灵活性,但这也是以牺牲一部分性能为代价的。

    4.反射常用的API

    (1)获取class对象

    在JavaAPI中,获取Class类对象有三种方法:

    第一种,使用Class.forName静态方法。当你知道该类的全路径名时,你可以使用该方法获取Class类对象。如下例子

    Classclz=Class.forName("java.lang.String");

    第二种,使用.class方法。

    这种方法只适合在编译前就知道操作的Class。如下例子

    Classclz=String.class;

    第三种,使用类对象的getClass()方法。如下例子

    Stringstr=newString("tony");

    Classclz=str.getClass();

    (2)通过反射创建类对象

    通过反射创建类对象主要有两种方式:通过Class对象的newInstance()方法、通过Constructor对象的newInstance()方法。

    第一种:通过Class对象的newInstance()方法。如下例子

    Classclz=User.class;

    Useruser=(User)clz.newInstance();

    第二种:通过Constructor对象的newInstance()方法。如下例子

    Classclz=User.class;

    Constructorconstructor=clz.getConstructor();

    Useruser=(User)constructor.newInstance();

    通过Constructor对象创建类对象可以选择特定构造方法,而通过Class对象则只能使用默认的无参数构造方法。下面的代码就调用了一个有参数的构造方法进行了类对象的初始化。如下

    Classclz=User.class;

    Constructorconstructor=clz.getConstructor(String.class,int.class);

    Useruser=(User)constructor.newInstance("tony",18);

    (3)通过反射获取属性、方法、构造器等

    我们通过Class对象的getFields()方法可以获取Class类的属性,但无法获取私有属性。而如果使用Class对象的getDeclaredFields()方法则可以获取包括私有属性在内的所有属性。

Java基础学习:Java反射机制学习

 以上就是动力节点java培训机构的小编针对“Java基础学习:Java反射机制学习”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>