关闭

黑马程序员_java 反射的基本理解

113人阅读 评论(0) 收藏 举报

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

反射基础知识

一、概述

       反射,简单的说就是把Java类中的各个成分反射成相应的Java类,它的反射机制主要是在运行的时候判断任意一个对象所属的类,同时构造成任意一个类的对象,并且在判断类的时候注意其具有的成员变量和成员方法,在运行的时候并调用其方法。我们也可以这样理解,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。

注意:类是程序的一部分,每一个类都有一个Class对象。

二、Class类

       所有的类文件都有共同属性,我们可以向上抽取,把这些共性内容封装成一个类,这个类就叫Class(也就是所谓的描述字节码文件的对象)。Class类中就包含属性有field(字段)、method(方法)、construction(构造函数)。而field中有修饰符、类型、变量名等复杂的描述内容,因此也可以将字段封装称为一个对象。用来获取类中field的内容,这个对象的描述叫Field。同理方法和构造函数也被封装成对象Method、Constructor。要想对一个类进行内容的获取,必须要先获取该字节码文件的对象。该对象是Class类型。其运行过程是当我们想生成这个类的对象的时候,JVM首先会检查这个类的Class对象是否已经加载,如果还没有加载,JVM就会按照类名查找,并将其.class文件载入,比如:Person这个类,它的实例对象是张三。Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class。

三、Class类中的方法

1、static Class forName(String className)

        返回与给定字符串名的类或接口的相关联的Class对象。

2、Class getClass()

        返回的是Object运行时的类,即返回Class对象即字节码对象。

3、Field getField(String name)

        返回一个Field对象,它表示此Class对象所代表的类或接口的指定公共成员字段。

4、Field[] getFields()

        返回包含某些Field对象的数组,表示所代表类中的成员字段。

5、Constructor getConstructor()

        返回Constructor对象,它反映此Class对象所表示的类的指定公共构造方法。

6、Method getMethod(String name,Class parameterTypes)

        返回一个Method对象,它表示的是此Class对象所代表的类的指定公共成员方法。

7、Method[] getMehtods()

        返回一个包含某些Method对象的数组,是所代表的的类中的公共成员方法。

8、String getName()

        以String形式返回此Class对象所表示的实体名称。

9、String getSuperclass()

        返回此Class所表示的类的超类的名称。

10、boolean isArray()

        判定此Class对象是否表示一个数组。

11、boolean isPrimitive()

        判断指定的Class对象是否是一个基本类型。

12、T newInstance()

        创建此Class对象所表示的类的一个新实例。

四、特点

       我们知道有九个预定义的Class对象,分别是八种基本类型(byteshortintlongfloatdoublecharboolean)的字节码对象和一种返回值为void类型的void.class。都可以用与之对应的包装类中的TYPE常量表示。由于今天很晚了,我今天的任务还没完成,我先去完成我今天的任务。具体的例子我在下一讲会一一进行举例。

-----------android培训java培训、java学习型技术博客、期待与您交流!------------

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1791次
    • 积分:125
    • 等级:
    • 排名:千里之外
    • 原创:11篇
    • 转载:1篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论