1.反射

案例:

需求:写一个“框架”,不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法

实现:

1.配置文件

2.反射

步骤:

1.将需要创建的对象的全类名和需要执行的方法定义在配置文件中

2.在程序中加载读取配置文件

3.使用反射技术来加载类文件进内存

4.创建对象

5.执行方法

代码:

结构:

在src下创建File(配置文件),命名pro.properties

文件内容:

className =cn.itcast.domain.Student

methodName= sleep

Student中有sleep方法:

public classStudent {public voidsleep() {

System.out.println("sleep...");

}

}

Person中有eat方法:

public classPerson {public voideat() {

System.out.println("eat...");

}public voideat(String food) {

System.out.println("eat..."+food);

}

}

ReflectTest:

/*** 框架类*/

public classReflectTest {public static void main(String[] args) throwsException {

/*前提:不能改变该类的任何代码,可以创建任意类的对象,可以执行任意方法*/

//1.加载配置文件//1.1创建properties对象

Properties pro = newProperties();//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);

}

}

运行ReflectTest的结果:

如果想要读取不同类的不同方法,不需要修改ReflecTest的代码,只要修改配置文件pro.properties的内容即可,例如,将代码修改如下:

className =cn.itcast.domain.Person

methodName= eat

运行ReflectTest的结果:

PS:后来想到Person中还有一个有参的eat方法,实现调用的方法:将ReflectTest中下列语句:

//5.获取方法对象

Method method =cls.getMethod(methodName);//6.执行方法

method.invoke(obj);

修改为:

//5.获取方法对象

Method method = cls.getMethod(methodName,String.class);//6.执行方法

method.invoke(obj,"饭");

运行ReflectTest的结果:

2.注解

java反射获得注释_Java反射、注解相关推荐

  1. java 读取 excel 注释_java利用注解实现简单的excel数据读取

    搜索热词 实现工具类 利用注解实现简单的excel数据读取,利用注解对类的属性和excel中的表头映射,使用Apache的poi就不用在业务代码中涉及row,rows这些属性了. 定义注解: @Ret ...

  2. java反射最佳实践_Java 反射最佳实践 – 码农网

    标签: 概要:最简单优雅的使用反射. 本文的例子都可以在示例代码中看到并下载,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request.本文的示例代码主要 ...

  3. java反射的原理_java反射机制的实现原理

    java反射机制的实现原理 反射机制: 所谓的反射机制就是java语言在运行时拥有一项自观的能力. 通过这种能力可以彻底的了解自身的情况为下一步的动作做准备. 下面具体介绍一下java的反射机制.这里 ...

  4. java反射 数组类型_Java反射-数组

    通过反射使用数组有时会比较棘手.特别是需要获得一个特定类型数组的Class对象,如int[]等.本文将讨论如何通过反射创建数组和获得他们的Class对象. 注意:本文在阅读Eyal Lupu的博客&q ...

  5. java反射随意值_Java反射总结

    能够分析类能力的程序称为反射.对于给定的Java类名,可以通过反射获取类的信息.将类的各成分映射出相应的Java类. Class类 在程序运行期间,Java运行时系统始终对所有的对象维护一个被称为运行 ...

  6. java反射源码_java反射技术详解附源码

    在学校学习Java时,由于学的不扎实,也没经历过太多实战项目,所以很多重要的知识点瞟一眼就过去了,比如现在要讲的反射,当时直接就忽略掉了,可现在发现很多地方需要反射,不得不重新学习一下,上学欠了太多债 ...

  7. java反射创建实例_Java反射创建实例

    Java反射创建实例 package com.wkcto.chapter08.demo02; import java.lang.reflect.Constructor; import java.lan ...

  8. java 反射 工厂模式_Java反射机制demo(七)—反射机制与工厂模式

    Java反射机制demo(七)-反射机制与工厂模式 工厂模式 简介 工厂模式是最常用的实例化对象模式. 工厂模式的主要作用就是使用工厂方法代替new操作. 为什么要使用工厂模式?直接new不好吗? 直 ...

  9. java方法示例注释 @_Java注释和真实世界的Spring示例

    java方法示例注释 @ "注释"是编程语言定义的一种,并用作"标记". 可以将它们视为编程语言引擎可以理解的注释行. 它们不会直接影响程序的执行,但会直接影响 ...

最新文章

  1. 「建模调参」之零基础入门数据挖掘
  2. Python 把OpenCV 获取的图像传递到C
  3. Qt学习笔记之QLatin1Char
  4. android StringBuffer实现换行
  5. JDK14性能管理工具:Jconsole详解
  6. zookeeper的四种类型的节点
  7. 信号学习第一课--基础知识
  8. mach-O文件结构分析
  9. ISO 17799 /27001标准简介
  10. xftp6成功安装教程(踩坑系列)
  11. 最全PR曲线、ROC曲线以及AUC计算公式详解
  12. OpenCV-Calibration-Detailed Description翻译
  13. 百度地图 InfoWindow上添加点击事件
  14. Cradle 从工程学角度预测血管和气管的流量并研究生物
  15. VBA按座次排位(交错排座,向一侧或两侧排座,混合排座)
  16. oracle nested loops outer,11g对Nested Loops的改进
  17. java算术表达式_一文了解如何用 Java 进行算术表达式计算
  18. 分析:公众号运营+引流,怎么从0到1运营
  19. STM32:使用ST官方的原理图和PCB封装
  20. 盒须图 python_什么是盒须图?

热门文章

  1. windows进程生产者消费者代码c语言,生产者消费者问题---C语言实现
  2. iOS多线程中performSelector: 和dispatch_time的不同
  3. python连接服务器怎么用_使用Python连接到远程服务器
  4. 山东计算机基础模拟题及答案,2016山东农信社考试模拟题--计算机基础知识答案(1)...
  5. linux目录加了一把锁怎么办,linux 文件加锁 lockf 小结
  6. php写实体类,PHP实体类
  7. java 单例写法_java 单例模式的几种写法
  8. iphone怎么重启_苹果手机进入itunes怎么退出
  9. python自动生成鸡汤文_20行python代码实现鸡汤智能生成器
  10. js php 正则差别,正则表达式(括号)、[中括号]、{大括号}的区别小结,正则表达式小结...