http://www.cnblogs.com/hongxinlaoking/p/4684652.html

一  反射机制的概念:

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

二  反射机制的应用:

生成动态代理,面向切片编程(在调用方法的前后各加栈帧).

三  反射机制的原理:

1  首先明确的概念: 一切皆对象----类也是对象.

2  然后知道类中的内容 :modifier  constructor  field  method.

3  其次明白加载: 当Animal.class在硬盘中时,是一个文件,当载入到内存中,可以认为是一个对象,是java.lang.class的对象.

当运行程序时,实例化时产生Animal.class对象,这两个对象有什么区别?

如下图,上面的Animal.class对象是java.lang.class的对象;下面的对象是Animal.class实例化产生的对象

4  当Animal.class载入到JVM中,JVM是怎么识别Animal.class中含有的方法,成员变量,构造方法等内容?

如下图, Animal.class实例化对象中成员变量  毛色 =红色;

加载到内存的时候,毛色=null,是在实例化的时候毛色被赋值为红色.

Animal.class中毛色这个属性对于java.lang.class来说,是Field的一个属性值, 毛色对于java.lang.class来说也是一个对象.这也是反射机制动态获取信息,以及动态调用对象方法的原因.

下图是Java.lang.class 中的方法

在java.lang.class中,毛色是Field的一个属性值,Animal中所有的方法,成员变量,构造器,修饰符都是按照java.lang.class中的标准去写的,否则会在编译的时候报错

四  放射机制简单实例代码

public class _14_ReflectTest07

{

     public static void main(String[] args) throws Exception{

         //1.获取类

         Class c = Class.forName("_12_CustomerService");

         //获取某个特定的方法

         //通过:方法名+形参列表

         Method m = c.getDeclaredMethod("login",String.class,String.class);

         //通过反射机制执行login方法.

         Object o = c.newInstance();

         //调用o对象的m方法,传递"admin""123"参数,方法的执行结果是retValue

         Object retValue = m.invoke(o, "admin","123");

         System.out.println(retValue); //true

     }

}

public class _12_CustomerService

{

     //登录

     public boolean login(String name,String pwd){

         if("admin".equals(name) && "123".equals(pwd)){

              return true;

         }

         return false;

     }

     //退出

     public void logout(){

         System.out.println("系统已安全退出!");

     }

}

  

JAVA的反射机制原理的更多相关文章

  1. 浅析Java中的反射机制原理

    反射反射,程序员的快乐! Java中反射机制使用的还是比较广泛的,系统的灵活性.可扩展性大都都是通过反射等方式来加载外部插件,使得系统与插件解耦的同时,增加了功能.但是很多人都只是会用,却是不知道它的 ...

  2. java笔录---反射机制(1)

    引言   为了方便记忆java的反射机制,在这里仔细的总结了一下.主要是怕以后忘记了,这样也方便回忆.因为最近利用空余时间深入的了解spring和Mybatis框架,   像spring中核心模块IO ...

  3. 面试题思考:什么是 Java 的反射机制

    一.反射机制概述 Java 反射机制是在运行状态中,对于任意一个类,都能够获得这个类的所有属性和方法,对于任意一个对象都能够调用它的任意一个属性和方法.这种在运行时动态的获取信息以及动态调用对象的方法 ...

  4. java:反射机制

    Java反射机制及IoC原理:https://www.cnblogs.com/Eason-S/p/5851078.html Java中反射机制详解:https://www.cnblogs.com/wh ...

  5. Java 类反射机制分析

    Java 类反射机制分析 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.在计算机科学领域,反射是一类应用,它们能够自描述和自控制.这类应用通过某 ...

  6. java的反射机制

    一.java的反射机制浅谈 最近研究java研究得很给力,主要以看博文为学习方式.以下是我对java的反射机制所产生的一些感悟,希望各位童鞋看到失误之处不吝指出.受到各位指教之处,如若让小生好好感动, ...

  7. Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别

    一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:   其中

  8. java笔记--反射机制之基础总结与详解

    一.反射之实例化Class类的5种方式: java的数据类型可以分为两类,即引用类型和原始类型(即基本数据类型). 对于每种类型的对象,java虚拟机会实例化不可变的java.lang.Class对象 ...

  9. JAVA的反射机制学习笔记(二)

    上次写JAVA的反射机制学习笔记(一)的时候,还是7月22号,这些天就瞎忙活了.自己的步伐全然被打乱了~不能继续被动下去.得又一次找到自己的节奏. 4.获取类的Constructor 通过反射机制得到 ...

随机推荐

  1. python image模块

    Image 模块 Image 模块提供了同名的类用来表示PIL的图像.Image模块还提供了许多工厂(factory)函数,包块从文件加载图像的函数,以及创建新图像的函数.    例子  下面的脚本加 ...

  2. HDU 2844 Coins(多重背包)

    点我看题目 题意 :Whuacmers有n种硬币,分别是面值为A1,A2,.....,An,每一种面值的硬币的数量分别是C1,C2,......,Cn,Whuacmers想买钱包,但是想给人家刚好的钱 ...

  3. 一个用于清除loadrunner产生log文件的批处理

    @echo off set work_path="%~dp0" for /R %%s in (*.txt,*.log) do ( del /f "%%s" ) ...

  4. mysql查看'datadir'目录

    mysql查看创建的数据库的数据,包含表等存放的目录,可以输入下面指令查看: show variables like 'datadir'

  5. iOS开发UI篇—Quartz2D简单使用(一)

    iOS开发UI篇—Quartz2D简单使用(一) 一.画直线 代码: 1 // 2 // YYlineview.m 3 // 03-画直线 4 // 5 // Created by apple on ...

  6. jav利用反射修改类的静态变量

    有Student这个类: public class Student { private static String schoolName=""; private static St ...

  7. NGUI所见即所得之UIAtlasMaker , UIAtlas (2)

    本文的重点就是要将NGUI把多张图片打成一个图集(Atlas)的原理和过程研究下,学习下Unity提供的api和NGUI写的功能以及设计思想. (原文链接) 其它链接:NGUI所见即所得之UIRoot ...

  8. 目录重定向的源代码工程( linux平台利用VFS实现目录重定向驱动)虚拟磁盘MINIPORT驱动代码(雨中风华)

    http://download.csdn.net/user/fanxiushu/uploads/2 http://download.csdn.net/user/fanxiushu/uploads/1

  9. msdn上wcf的介绍

    https://msdn.microsoft.com/zh-cn/library/dd456779(v=vs.110).aspx Windows Communication Foundation Ar ...

  10. DedeCMS 5.7 config.php 跨站脚本漏洞

    漏洞版本: DedeCMS 5.7 漏洞描述: DeDeCMS v5.7 在/include/dialog/config.php文件中存在XSS漏洞,攻击者可以利用该漏洞盗取用户Cookie.挂马等. ...