Java学习笔记之反射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java学习笔记之反射相关的知识,希望对你有一定的参考价值。

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



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学习笔记之反射的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记之JVM

JAVA 学习笔记 - 反射机制

java 反射代码片段

JavaSE 学习笔记之反射技术(二十四)

Java 反射学习笔记

学习笔记之xss原理篇