java的反射机制

Posted songjn

tags:

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

一、反射的概述

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

以上的总结就是什么是反射

反射就是把java类中的各种成分映射成一个个的Java对象

例如:一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。

     (其实:一个类中这些成员方法、构造方法、在加入类中都有一个类来描述)

如图是类的正常加载过程:反射的原理在与class对象。

熟悉一下加载的时候:Class对象的由来是将class文件读入内存,并为之创建一个Class对象。

 

1、获取Class对象的三种方式

1.1 Object ——> getClass();
1.2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性
1.3 通过Class类的静态方法:forName(String  className)(常用)

1.    <span style="font-size:18px;">package fanshe;  
2.    /** 
3.     * 获取Class对象的三种方式 
4.     * 1 Object ——> getClass(); 
5.     * 2 任何数据类型(包括基本数据类型)都有一个“静态”的class属性 
6.     * 3 通过Class类的静态方法:forName(String  className)(常用) 
7.     * 
8.     */  
9.    public class Fanshe {  
10.        public static void main(String[] args) {  
11.            //第一种方式获取Class对象    
12.            Student stu1 = new Student();//这一new 产生一个Student对象,一个Class对象。  
13.            Class stuClass = stu1.getClass();//获取Class对象  
14.            System.out.println(stuClass.getName());  
15.              
16.            //第二种方式获取Class对象  
17.            Class stuClass2 = Student.class;  
18.            System.out.println(stuClass == stuClass2);//判断第一种方式获取的Class对象和第二种方式获取的是否是同一个  
19.              
20.            //第三种方式获取Class对象  
21.            try {  
22.                Class stuClass3 = Class.forName("fanshe.Student");//注意此字符串必须是真实路径,就是带包名的类路径,包名.类名  
23.                System.out.println(stuClass3 == stuClass2);//判断三种方式是否获取的是同一个Class对象  
24.            } catch (ClassNotFoundException e) {  
25.                e.printStackTrace();  
26.            }  
27.              
28.        }  
29.    }</span>  

注意:在运行期间,一个类,只有一个Class对象产生。

三种方式常用第三种,第一种对象都有了还要反射干什么。第二种需要导入类的包,依赖太强,不导包就抛编译错误。一般都第三种,一个字符串可以传入也可写在配置文件中等多种方法。

转载文章:http://blog.csdn.net/sinat_38259539/article/details/71799078

以上是关于java的反射机制的主要内容,如果未能解决你的问题,请参考以下文章

反射机制入门

反射机制入门

java 反射代码片段

深入理解java的反射机制

Java反射机制

Java核心技术梳理-类加载机制与反射