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

Java学习笔记之反射

时间:2016-07-01 16:35:55      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:reflect

鲁春利的工作笔记,谁说程序员不能有文艺范?



Java程序在运行期间可以动态加载、解析和使用一些在编译阶段并不确定的类型,这一机制被称为反射(Reflection)或自省(Introspection)。Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。这种“看透class”的能力(the ability of the program toexamine itself)被称为introspection(内省、内观、反省)。Reflection和introspection是常被并提的两个术语。


Class类是Reflection API 中的核心类。在类加载时,java虚拟机会自动创建相应的Class对象。

在java.lang.Object 类中定义了getClass()方法,因此对于任意一个Java对象,都可以通过此方法获得对象的类。
Class类的实例用于表示运行时的java数据类型,包括类、接口、数组、枚举、注解、基本数据类型甚至void等。

使用 Reflection 步骤总结:

一、获得你想操作的类的 java.lang.Class 对象

获得Class对象:

  • 针对引用数据类型:

调用静态方法:Class.forName();

Class.forName("p1.Person");
Class.forName("com.mysql.jdbc.Driver");

调用Object类中定义的getClass()方法

Person person = new Person();
Class  cs = p.getClass();
Class  strClass = "Hello World".getClass()

使用.class表达式

Class  strClass = String.class;
Class  personClass = p1.Person.class;
Class  jdbcClass = com.mysql.jdbc.Driver.class;
  • 针对基本数据类型及void

使用.class表达式

Class  intClass = int.class;
Class  dobClass = double.class;
Class  voidClass = void.class;

调用相应封装类的Type属性

Class IntegerClass = Integer.TYPE;
Class voicClass = Void.TYPE;

二、取得类的成员信息

调用例如 getDeclaredMethods 等方法

技术分享

三、使用 Reflection API 来操作类的成员信息

在JDK中,主要由以下类来实现Java反射机制,这些类都位于java.lang.reflect包中。

技术分享


本文出自 “闷葫芦的世界” 博客,请务必保留此出处http://luchunli.blog.51cto.com/2368057/1794856

Java学习笔记之反射

标签:reflect

原文地址:http://luchunli.blog.51cto.com/2368057/1794856

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