码迷,mamicode.com
首页 > 编程语言 > 详细

浅析Java反射机制

时间:2017-11-17 16:26:32      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:declared   ace   tco   strong   封装   mod   prot   构造方法   es2017   

一、什么是反射

  动态获取类的信息以及动态调用对象的方法称为Java的反射(Reflection)机制。反射提供了封装程序集、模块和类型的对象。在Java运行时环境中,对于任意一个类的对象,可以通过反射获取这个类的信息。

技术分享图片

二、反射的作用

  Java反射机制允许程序在运行时透过Reflection APIs取得任意一个已知名称的class的内部信息,包括modifiers(如public、static等)、superclass(如Object)、实现的interfaces(如Serializable)、fields(属性)和methods(方法)(但不包括methods定义),可于运行时改变fields的内容,也可调用methods.

三、Java Reflection API简介

  在JDK中,主要由以下类实现Java反射机制:

    ①Class类:代表一个类;

    ②Field类:代表类的成员变量(属性);

    ③Method类:代表类的方法;

    ④Constructor类:代表类的构造方法;

    ⑤Array类:提供了动态创建数组,以及访问数组元素的静态方法;

    以上类中,Class类在java.lang包,其余位于java.lang.reflect包。

  java.lang.Object类(所有类的超类)定义了getClass()方法,任意一个Java对象都可以通过此方法获得它的class。

  Class类是Reflection API中的核心类,主要有以下方法:

    ①getName():获取类的名字;

    ②getFields():获取类中public类型的属性;

    ③getDeclaredFields():获取类的所有属性(包括public、protected、default、private);

    ④getMethods():获取类中public类型的方法;

    ⑤getDeclaredMethods():获取类的所有方法;

    ⑥getMethod(String name,Class[] parameterTypes):获取类的指定方法,name:指定方法的名字,parameterType:指定方法的参数类型;

    ⑦getConstrutors():获取类中public类型的构造方法;

    ⑧getConstrutor(Class[] parameterTypes):获取类的指定构造方法,parameterTypes:指定构造方法的参数类型;

    ⑨newInstance():通过类默认的不带参数的构造方法创建该类的一个对象;

注:在访问私有属性和私有方法时,需要对访问的私有属性或方法设置setAccessible(true)使被反射的类抑制java的访问检查机制。否则会报IllegalAccessException异常。

浅析Java反射机制

标签:declared   ace   tco   strong   封装   mod   prot   构造方法   es2017   

原文地址:http://www.cnblogs.com/ToukoXu/p/7851662.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!