Java反射原理

xiaoxiao2021-02-28  17

一  反射机制的概念:

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

二  反射机制的应用:

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

三  反射机制的原理:

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

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

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

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

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

 

  反射机制简单实例代码

com.demo.util.com.demo.util

public class ReflectDemo { public static void refTest(){ String className = "com.demo.util.TestConnection" ; Object o = null ; try { // 通过反射机制,使用类装载器,装载该类 Class<?> cl = Class.forName(className) ; //输出反射得到的类 System.out.println(cl); //创建该类的实例,转化为接口 o = cl.newInstance() ; //获取某个特定的方法 通过:方法名+形参列表 Method method = cl.getDeclaredMethod("testConnection" , Integer.class) ; // 通过反射机制执行方法 Object retValue = method.invoke(o , 5 ); System.out.println(retValue); } catch (Exception e) { e.printStackTrace() ; } } public static void main(String[] args) { refTest() ; } } com.demo.util.TestConnectionpublic class TestConnection { public TestConnection(){ System.out.println("This is TestConnection !!! "); } public Integer testConnection(Integer time){ System.out.println("This is TestConnection's testConnection() !!! "); return time ; } }

转载请注明原文地址: https://www.6miu.com/read-450219.html

最新回复(0)