news 2026/10/26 1:26:27

java学习笔记(十七)——反射,注解,Junit单元框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java学习笔记(十七)——反射,注解,Junit单元框架

文章目录

  • Junit单元框架
    • 具体步骤
    • 常用方法
  • 反射
    • 获取类
    • 获取类的构造器
    • 获取类的成员变量
    • 获取类的成员方法
    • 应用场景
  • 注解
    • 自定义注解
    • 元注解
    • 注解的解析
    • 应用

Junit单元框架


具体步骤

  • 将Junit框架的jar包导入到项目中(注意:IDEA集成了Junit框架,不需要我们自己手工导入了)
  • 编写测试类、测试类方法(注意:测试方法必须是公共的,无参数,无返回值的非静态方法)
  • 必须在测试方法上使用@Test注解(标注该方法是一个测试方法)
  • 在测试方法中,编写程序调用被测试的方法即可。
  • 选中测试方法,右键选择“JUnit运行” ,如果测试通过则是绿色;如果测试失败,则是红色

常用方法


反射

获取类

  • 方式一:Class c1 = Class.forName(“全类名”);
  • 方式二:Class c2 = 类名.class
  • 方式三:Class c3 = 对象.getClass();

获取类的构造器

利用反射技术获取构造器对象的方式
getDeclaredConstructors()
getDeclaredConstructor (Class<?>… parameterTypes)

反射得到的构造器可以做什么?
依然是创建对象的
public newInstance(Object… initargs)

如果是非public的构造器,需要打开权限(暴力反射),然后再创建对象
setAccessible(boolean)
反射可以破坏封装性,私有的也可以执行了。

获取类的成员变量

获取类中成员变量对象的方法
getDeclaredFields()
getDeclaredField (String name)

反射得到成员变量可以做什么?
依然是在某个对象中取值和赋值。
void set​(Object obj, Object value):
Object get​(Object obj)

如果某成员变量是非public的,需要打开权限(暴力反射),然后再取值、赋值
setAccessible(boolean)

获取类的成员方法

利用反射技术获取成员方法对象的方式
getDeclaredMethods()
getDeclaredMethod (String name, Class<?>… parameterTypes)

反射得到成员方法可以做什么?
依然是在某个对象中触发该方法执行。
Object invoke​(Object obj, Object… args)

如果某成员方法是非public的,需要打开权限(暴力反射),然后再触发执行
setAccessible(boolean)

应用场景

绕过泛型

  • 编译成Class文件进入运行阶段的时候,泛型会自动擦除。
  • 反射是作用在运行时的技术,此时已经不存在泛型了。
    搭建框架
    需求
    给你任意一个对象,在不清楚对象字段的情况可以,可以把对象的字段名称和对应值存储到文件中去。
    分析
  • 定义一个方法,可以接收任意类的对象。
  • 每次收到一个对象后,需要解析这个对象的全部成员变量名称。
  • 这个对象可能是任意的,那么怎么样才可以知道这个对象的全部成员变量名称呢?
  • 使用反射获取对象的Class类对象,然后获取全部成员变量信息。
  • 遍历成员变量信息,然后提取本成员变量在对象中的具体值
  • 存入成员变量名称和值到文件中去即可。

注解

自定义注解

Annotation: 注解的顶级接口,注解都是Annotation类型的对象

元注解

注解注解的注解

  • @Target约束自定义注解可以标记的范围。

  • @Retention用来约束自定义注解的存活范围。

注解的解析

解析技巧:
注解在哪个成分上,我们就先拿哪个成分对象。

  • 比如注解作用成员方法,则要获得该成员方法对应的Method对象,再来拿上面的注解
  • 比如注解作用在类上,则要该类的Class对象,再来拿上面的注解
  • 比如注解作用在成员变量上,则要获得该成员变量对应的Field对象,再来拿上面的注解

应用

模拟Junit框架

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 1:26:03

java学习笔记(四)——抽象类与接口

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/26 1:24:04

免费给老 Mac 装最新 macOS:OpenCore Legacy Patcher 完整指南

免费给老 Mac 装最新 macOS&#xff1a;OpenCore Legacy Patcher 完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 用 OpenCore Legacy Patcher 给老 …

作者头像 李华
网站建设 2026/10/26 1:16:28

Formality:官方Tutorial(三)

相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 本文是对Synopsys Formality User Guide Tutorial中第三个实验的翻译&#xff08;有删改&#xff09;&#xff0c;Lab文件可以从以下链接获取。 Formality官方Tut…

作者头像 李华
网站建设 2026/10/26 1:11:12

PLC工程师入行与进阶指南:从电气基础到现场调试的90条实战经验

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华