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

java的反射机制

时间:2018-02-27 10:55:22      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:对象   基本数据类型   动态获取   一个个   字符串   反射技术   das   java反射   art   

一、反射的概述

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的反射机制

标签:对象   基本数据类型   动态获取   一个个   字符串   反射技术   das   java反射   art   

原文地址:https://www.cnblogs.com/songjn/p/8477475.html

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