当前位置: 首页 > news >正文

反射机制-体会反射的动态性案例(尚硅谷Java学习笔记)

// 举例01
public class Reflect{

// 静态性
public Person getInstance(){return new Person();
}// 动态性
public T<T> getInstance(String className) throws Exception{Calss clzz = Class.forName(className);Constructor con = class.getDeclaredConstructor();con.setAccessible(true);return (T)con.newInstance();
}// 动态性
public Object invoke(String className,String methodName) throws Exception{// 1.创建全类名对应的运行时类的对象Calss clzz = Class.forName(className);Constructor con = class.getDeclaredConstructor();con.setAccessible(true);Object obj = con.newInstance();// 2.获取运行时类中指定的方法,并调用Method method = clazz.getDeclaredMethod(methodName);method.setAccessible(true);return method.invoke(obj);
}

}

案例:榨汁机榨水果汁,水果分别有果(com.reflect.Apple)、香蕉(Banana)、桔子(Orange)等。
效果如图。
提示:
1、声明(Fruit)水果接口,包含榨汁抽象方法: void squeeze(); /skwi:z/
2、声明榨汁机(Juicer),包含运行方法: public void run(Fruit f),方法体中,调用f的榨汁方法squeeze()
3、声明各种水果类,实现水果接口,并重写squeeze();
4、在src下,建立配置文件: config.properties,并在配置文件中配上fruitName=xXx(其中xx为某种水果的全类名)
5、在FruitTest测试类中,
(1)读取配置文件,获取水果类名,并用反射创建水果对象,
(2)创建榨汁机对象,并调用run()方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/139145.html

相关文章:

  • uniapp离线打包apk - Android Studio
  • cuda面试准备(一),架构调试
  • docker containers logs清理
  • Ubuntu安装RabbitMQ
  • Vue3获取当前环境信息
  • Linux 系统 diff 文件比较命令详解
  • 【负载均衡】Nacos简单入门
  • 实验一 ubuntu 网络环境配置
  • ubuntu can应用开发环境搭建指南
  • 全流程R语言Meta分析核心技术高阶应用
  • windows下安装使用git-lfs克隆大文件
  • Node.js下载安装及环境配置教程
  • 半导体低压热氧工艺中的真空度精密控制解决方案
  • TCP的可靠性之道:确认重传和流量控制
  • 基于spring boot校园疫情信息管理系统/疫情管理系统
  • 使用Python批量将飞书文档转为MD
  • Nacos配置管理、Feign远程调用、Gateway服务网关
  • 解决Spring Boot前后端分离开发模式中的跨域问题
  • 常见前端面试之VUE面试题汇总五
  • 带着问题看SpringBoot
  • 【Go 基础篇】Go语言匿名函数详解:灵活的函数表达式与闭包
  • MobileNet、MobileNetV2和MobileNetV3创新点总结
  • 算法:数据转换处理2(云台显控)
  • 让大数据平台数据安全可见-行云管家
  • 微信小程序开发教学系列(3)- 页面设计与布局
  • 基于JSP+Servlet+mysql员工权限管理系统
  • Qt 自定义提示框 右下角冒泡
  • js、PHP连接外卖小票机打印机方案(调用佳博、芯烨等)
  • window定时备份MySQL数据库,默认备份7天,一小时备份一次
  • 正则中常见的流派及其特性