zoukankan      html  css  js  c++  java
  • Java反射机制 —— 简单了解

    一、概述

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

      反射就是把java类中的各种成分映射成一个个的Java对象。(一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。)

    二、反射机制获取类有三种方法

     1 /** 
     2  * 反射机制获取类有三种方法 
     3  */  
     4 @Test  
     5 public void testGetClass() throws ClassNotFoundException {  
     6     Class clazz = null;  
     7   
     8     //1 直接通过类名.Class的方式得到  
     9     clazz = Person.class;  
    10     System.out.println("通过类名: " + clazz);  
    11   
    12     //2 通过对象的getClass()方法获取,这个使用的少(一般是传的是Object,不知道是什么类型的时候才用)  
    13     Object obj = new Person();  
    14     clazz = obj.getClass();  
    15     System.out.println("通过getClass(): " + clazz);  
    16   
    17     //3 通过全类名获取,用的比较多,但可能抛出ClassNotFoundException异常  
    18     clazz = Class.forName("com.java.reflection.Person");  
    19     System.out.println("通过全类名获取: " + clazz);  
    20 }   
      获取Class对象的三种方式 
    1.   类名.class。任何数据类型(包括基本数据类型)都有一个“静态”的class属性 。需要导入类的包,依赖太强,不导包就抛编译错误。
    2.   通过 getClass()。对象都有了还要反射干什么。
    3.   根据全类名路径获取。通过Class类的静态方法:forName(String  className)(常用) 。

    三、Java反射机制类:

    java.lang.Class; //类               
    java.lang.reflect.Constructor;//构造方法 
    java.lang.reflect.Field; //类的成员变量       
    java.lang.reflect.Method;//类的方法
    java.lang.reflect.Modifier;//访问权限

    四、JAVA反射应用

      这个的话,在框架中应用的比较多、例如spring框架中bean的注入,mybatis的动态代理,以及JDBC连接数据库时第一步注册数据库驱动也是利用反射

      程序员在自己的业务开发中应该尽量的远离反射, 性能是一个问题,反射相当于一系列解释操作,通知jvm要做的事情,性能比直接的java代码要慢很多。

  • 相关阅读:
    Python Revisited Day 13 (正则表达式)
    Python Revisited Day 06 (面向对象程序设计)
    Python Revisited (变量)
    Python Revisited Day 05(模块)
    Python Revisited Day 04 (控制结构与函数)
    Python Revisited Day 03 (组合数据类型)
    Numpy
    Python Revisited Day 01
    Python3使用openpyxl读写Excel文件
    Python3操作YAML文件
  • 原文地址:https://www.cnblogs.com/sun7897/p/8811245.html
Copyright © 2011-2022 走看看