反射案例
- 需求:写一个"框架",可以帮我们创建任意类的对象,并且执行其中的任意方法
- 实现:
- 实现文件
- 反射,
-
- 步骤:
- 将需要创建对象的全类名和需要执行的方法定义在配置文件中
- 在程序中加载读取配置文件
- 使用反射技术来加载类文件进内存
- 创建对象
- 执行方法
创建配置文件:
框架代码:
/* 框架类 */ public class demo_05 { public static void main(String[] args) throws Exception { //可以创建任意类的对象,可以执行任意方法 /* 前提:不能改变该类的任何代码,可以创建任意类的对象,可以执行任意方法 */ // Person person = new Person(); // person.eat(); // Student student = new Student(); // student.sleep(); //1.加载配置文件 //1.1创建Properties对象 Properties pro = new Properties(); //1.2加载配置文件,转换为一个集合 //1.2.1获取class目录下的配置文件(获取对应文件下的加载器) ClassLoader classLoader = demo_05.class.getClassLoader();//getClassLoader():加载器 InputStream resourceAsStream = classLoader.getResourceAsStream("pro.properties");//资源对应的字节流 pro.load(resourceAsStream); //传入字节流 //2.获取配置文件中定义的数据 String className = pro.getProperty("className"); String methodName = pro.getProperty("methodName"); //3.加载该类进内存 Class<?> aClass = Class.forName(className); //4.创建对象 Object o = aClass.newInstance(); //5.获取方法对象 Method method = aClass.getMethod(methodName); //6.执行方法 method.invoke(o); } }
运行结果:
注解-概念
概念:说明程序的。给计算机看的
注释:用文字描述程序的。给程序员看的
定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。
它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
概念描述:
JDK1.5之后的新特性
说明程序的
使用注解:@注解名称
作用分类:
1.编写文档:通过代码里标识的注解生产文档(生产文档doc文档)
2.代码分析:通过代码里标识的元数据对代码进行分析(使用反射)
3.编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查(Override)
/** * 注解演示 */ public class AnnoDemo1 { /** * 计算两数的和 * @param a 整数 * @param b 整数 * @return 两数的和 */ public int add(int a,int b){ return a+b; } }
标签:反射,配置文件,pro,public,案例,注解,代码,加载 From: https://www.cnblogs.com/qihaokuan/p/16625733.html