欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > java >内容正文

java

Java反射:框架设计的灵魂

发布时间:2024/10/8 java 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Java反射:框架设计的灵魂 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Java反射:框架设计的灵魂

  • 框架:办成品软件,可以在框架的基础上进行开发
  • 反射:将类的各个部分封装成对象,这就是反射机制

反射的好处

  • 在程序运行的过程中,操作这些对象
  • 可以降低程序的耦合性,提高程序的可扩展性

获取class对象的方式

  • Class.forName(“全类名”):经字节码文件加载进内存,返回class对象
    • 多用于配置文件,将类名定义在配置文件中,读取文件,加载类
  • 类名.class:通过类名的属性class获取
    • 多用于参数传递
  • 对象.getClass():getClass()方法在Object方法中定义
    • 多用于对象的获取字节码的方式
  • 同一个字节码文件(*.class)在一次程序运行过程中,只被加载一次
    不论通过哪一种方式获取的Class文件都是同一个
  • package reflect;import domain.Person;public class ReflectPerson {public static void main(String[] args) throws Exception {//Class.forName("全类名")Class cls1 = Class.forName("domain.Person");System.out.println(cls1);//类名.classClass cls2 = Person.class;System.out.println(cls2);//对象.getClass()Person p = new Person();Class cls3=p.getClass();System.out.println(cls3);//比较三个对象System.out.println(cls1==cls2);//trueSystem.out.println(cls1==cls3);//true} }

    Class对象的功能

    获取功能

    • 获取成员变量们
    • 获取构造方法们
    • 获取成员方法们
    • 获取类名

    实例

    写一个“框架”,可以帮我们创建任意类的对象,并且执行其中任意方法

    • 步骤:
  • 将需要创建的对象的全类名和需要执行的方法定义在配置文件中
  • 在程序中加载读取配置文件
  • 使用反射技术来加载类文件进内存
  • 创建对象,执行方法
  • 配置文件

    //className=cn.itcast.Person //methodName=eat className=cn.itcast.Student methodName=sleep

    执行代码

    package cn.itcast.test;import java.io.InputStream; import java.lang.reflect.Method; import java.util.Properties;public class ReflectTest {public static void main(String[] args) throws Exception {//1.加载配置文件//1.1创建Properties文件Properties pro = new Properties();//创建properties对象//1.2加载配置文件,转换成一个集合//1.2.1获取Class目录下的配置文件ClassLoader classLoader = ReflectTest.class.getClassLoader();InputStream is = classLoader.getResourceAsStream("pro.properties");pro.load(is);//2.获取配置文件中定义的数据String className = pro.getProperty("className");String methodName = pro.getProperty("methodName");//3.加载该类进内存Class cls = Class.forName(className);//4.创建对象Object obj = cls.newInstance();//5.获取方法对象Method method = cls.getMethod(methodName);//6.执行方法method.invoke(obj);} }

    总结

    以上是生活随笔为你收集整理的Java反射:框架设计的灵魂的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。