一、反射机制背景概述

  1、反射(reflection)是java被视为动态语言的一个关键性质

  2、反射机制指的是程序在运行时能获取任何类的内部所有信息

二、反射机制实现功能概述

  1、只要给定类的全名,就能通过反射获取类的所有信息

  2、程序在运行是能够获取任何一个对象所属的类对象

  3、在运行时可以获取类的所有属性,并对其操作

  4、在运行时可以获取类、父类的所有方法并调用

  5、当前的主流框架struts2、srping、hiberate等框架的核心功能都是通过java反射机制来实现的

三、反射相关对象的机制与实现

  1、Class对象的机制与实现

    (1)Class对象概述

      Class就是类的类型

    (2)Class常用方法

      getName()获取类的完整名称

      getDeclaredFields()获得类中的所有属性

      getDeclaredMethods()获取类中所有的方法

      getConstructors()获得类的构造方法

      newInstance()实例化类的对象

      等等。。

  2、获取类的三种方式

    (1)Class.forName(String className),className必须是类的全路径

    (2)Book book = new Book(); book.getClass();

    (3)Book.Class;

  在java反射机制中,还有许多重要的对象,比如Field,Method等,此处不一一介绍,可以通过查看javaAPI了解其功能。

java反射学习之一反射机制概述的更多相关文章

  1. Java反射学习-5 - 反射复制对象

    通过反射方式复制对象: package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Fi ...

  2. Java反射学习-4 - 反射调用方法

    反射调用方法: package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Method ...

  3. JAVA基础学习day27--反射机制

    一.概述 1.1.概述 反射的概念: 在Java中的反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法; 这种动态获取信息以及动 ...

  4. java 日常学习记录-反射

    Hero类 package helloworld; public class Hero { public String name; //姓名 public float hp; //血量 public ...

  5. 【java基础学习】反射

    1. 什么是反射 Class.Method.Field.Constructor,它们是反射对象.它们是类.方法.成员变量.构造器,在内存中的形式. 也就是万物皆对象!类是类型.方法是类型.成员变量是类 ...

  6. Java基础学习(1)——反射

    反射就是把Java类中的各种成分映射成相应的Java类(主要用于框架开发) 反射的基石–>Class类 Java程序中的各个类属于同一事物,描述这类事务的Java类名就是Class. Class ...

  7. Java反射学习-3 - 反射获取属性,方法,构造器

    package cn.tx.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import ...

  8. Java反射学习-1 - 反射获取类的属性,方法,构造器

    新建一个Person类 package cn.tx.reflect; /** * 注解初步了解 * @author Administrator * */ public class Person { p ...

  9. java核心技术学习笔记之一程序设计概述

    Java 核心技术之一程序设计概述 一.   Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...

随机推荐

  1. iOS coredata 数据库的加密(待研究)

    https://github.com/project-imas/encrypted-core-data 使用起来很方便,底层还是使用了SQLCipher,有时间要研究一下! 数据库的密码不能用固定字符 ...

  2. 性能优化方法(Z)

    关于C#程序优化的五十种方法 作者: 字体:[增加 减小] 类型:转载 时间:2013-09-12我要评论 这篇文章主要介绍了C#程序优化的五十个需要注意的地方,使用c#开发的朋友可以看下 一.用属性 ...

  3. Asp.net 解决下载乱码问题,支持火狐、IE、谷歌等主流浏览器

    public static void DownFileStream(MemoryStream ms, string fileName) { if (ms !=Stream.Null) { ) { fi ...

  4. STM32F412应用开发笔记之五:结合W5500实现以太网通讯

    因实际使用需求我们测试一下网络通讯,在NUCLEO-F412ZG测试板上没有以太网部分,我们选择外接一个W5500的实验板.W5500支持SPI接口通讯,DC3.3V供源.而NUCLEO-F412ZG ...

  5. 添加OSG各种事件处理器

    // add the state manipulator viewer.addEventHandler( new osgGA::StateSetManipulator(viewer.getCamera ...

  6. 基础拾遗------webservice详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  7. 安装SQL Developer,连接Oracle 12c,创建新用户

    1.访问Oracle官网:https://www.oracle.com/index.html,下载SQL Developer 2.安装... 3.打开Sql Developer,右键"创建新 ...

  8. ubuntu下更改鼠标移动速度

    ubuntu下,系统设置中,无法更改外接鼠标的移动指针速度,如图: 然后百度,终于找到一个靠谱打方法: 命令: xset m N 其中,N是速度,估计取值为0-10 该方法比起网上的某些攻略简单好多

  9. Python Web 方向(一)

    Python Web 方向(一) --------Django站点创建 文章地址:http://www.cnblogs.com/likeli/p/5821744.html Python版本:2.7 推 ...

  10. Linux下安装Tomcat服务器和部署Web应用

    一.上传Tomcat服务器