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

Java基础——高级技术

1. 单元测试

  1. 就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。

1.1. Junit单元测试框架

  1. 可以用来对方法进行测试,他是第三方公司开源出来的(很多开发工具都已经集成了Junit框架,如IDEA)
1.1.1. 优点
  1. 可以灵活的编写测试代码,可以针对某个方法执行测试,也支持一键完成对全部方法的自动化测试,且各自独立。
  2. 不需要程序员去分析测试结果,会自动生成测试报告。
1.1.2. 使用步骤

1.1.3. 断言机制

可以让程序员预测方法的结果,判断业务是否正确

1.2. Junit框架的常见注解

2. 反射

2.1. 反射

  1. 反射就是,加载类,并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器)。

2.2. 如何获取类的信息、操作它们

  1. 加载类,获取类的字节码:Class对象
  2. 获取类的构造器:Constructor对象
  3. 获取类的成员变量:Field对象
  4. 获取类的成员方法:Method对象

2.3. 获取类

获取Class对象的三种方式

  1. Class c1 = 类名.class
  2. 调用Class提供方法:public static Class forName(String package)
  3. Object类提供的方法:public Class getClass(); Class c3 = 对象.getClass();

2.4. 获取类的构造器

  1. 获取类构造器的作用:依然是初始化对象返回

2.5. 获取类的成员变量

  1. 获取成员变量的作用:依然是赋值、取值

2.6. 获取类的成员方法

  1. 成员方法的作用:依然是执行

2.7. 作用

  1. 基本作用:可以得到一个类的全部成分然后操作。
  2. 可以破坏封装性
  3. 最重要的用途是:适合做Java框架,基本上,主流的框架都会基于反射设计出一些通用的功能。

2.8. 使用反射做一个简易版框架

/*** 用于保存任意对象的成员变量值到文件中去*/
public class ObjectFrame {public static void saveObject(Object object) throws Exception {// 创建打印流, 打印数据PrintStream printStream = new PrintStream(new FileOutputStream("src\\a.txt", true));// 不清楚对象的成员变量数量 通过反射机制获取所有的成员变量// 获取类的字节码Class c = object.getClass();// 获取所有的成员变量Field[] fields = c.getDeclaredFields();printStream.println("-------------" + c.getSimpleName() + "--------------");// 遍历所有的成员变量for (Field field : fields) {field.setAccessible(true);// 获取成员变量的名字String name = field.getName();// 获取该成员变量在对象中的值String value = field.get(object) + "";printStream.print(name + "------>" + value + "\r\n");}}
}
public class FrameTest {@Testpublic void test1() throws Exception {Student student = new Student("小明", 19, "男", 178.5);Teacher teacher = new Teacher("张老师",9000);ObjectFrame.saveObject(student);ObjectFrame.saveObject(teacher);}
}

3. 注解

3.1. 特点

  1. 就是Java代码里的特殊标积,如@Override、@Test等,作用是:让其他程序根据注解信息来决定怎么执行该程序。
  2. 注解可以用在类上、构造器上、方法上、成员变量上、参数上等位置处。

3.2. 自定义注解

  1. 特殊属性名:value,如果注解中只有一个value属性,使用注解时,value名称可以不写!!

3.3. 注解的原理

3.4. 元注解

  1. 指修饰注解的注解

3.5. 注解的解析

  1. 判断类上、方法上、成员变量上是否存在注解,并把注解里的内容给解析出来。
3.5.1. 如何解析

4. 动态代理

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

相关文章:

  • 什么是SSL VPN?其中的协议结构是怎样的?
  • 程序员高频率面试题-整理篇
  • 第二十二章 TCP 客户端 服务器通信 - TCP设备的OPEN和USE命令关键字
  • CSS 语法规范
  • Linux开发常用命令
  • Linux第92步_如何编写“设备树”下的platform设备驱动
  • 从零开始学习 sg200x 多核开发之 eth0 MAC 地址修改
  • JMeter与大模型融合应用之JMeter日志分析服务化实战应用
  • AtCoder Beginner Contest 380(A-F)
  • 多线程-阻塞队列
  • el-table合并单元格之后,再进行隔行换色的且覆盖表格行鼠标移入的背景色的实现
  • java模拟键盘实现selenium上下左右键 table中的左右滚动条实现滚动
  • SDF,一个从1978年运行至今的公共Unix Shell
  • 前馈神经网络 (Feedforward Neural Network, FNN)
  • 【Python进阶】Python中的数据库交互:使用SQLite进行本地数据存储
  • ZooKeeper单机、集群模式搭建教程
  • 函数指针示例
  • vue如何实现组件切换
  • 计算机视觉 1-8章 (硕士)
  • 整数唯一分解定理
  • Grass脚本2倍速多账号
  • 15分钟学 Go 第 56 天:架构设计基本原则
  • HTML5 Video(视频)
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-tool usage入门-串行调用多个tools(三)
  • MySQL:表设计
  • 173. 二叉搜索树迭代器【 力扣(LeetCode) 】
  • 大三学生实习面试经历(1)
  • 【论文复现】STM32设计的物联网智能鱼缸
  • 常见长选项和短选项对应表
  • Ubuntu24 上安装搜狗输入法