day20 Junit测试、反射、注解

jrt-fs.jar、rt.jar lib包中的jrt-fs.jar 和 rt.jar 包下载,rt.jar:Java基础类库,也就是Java doc里面看到的所有的类的class文件。dt.jar:dt.jar是关于运行环境的类库,主要是swing包。 立即下载

今日内容

  1. Junit单元测试
  2. 反射
  3. 注解

Junit单元测试:

  • 测试分类:

    1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。
    2. 白盒测试:需要写代码的。关注程序具体的执行流程。
  • Junit使用:白盒测试

    • 步骤:

      1. 定义一个测试类(测试用例)

        • 建议:
          • 测试类名:被测试的类名Test CalculatorTest
          • 包名:xxx.xxx.xx.test cn.itcast.test
      2. 定义测试方法:可以独立运行

        • 建议:
          • 方法名:test测试的方法名 testAdd()
          • 返回值:void
          • 参数列表:空参
      3. 给方法加@Test

      4. 导入junit依赖环境

    • 判定结果:

      • 红色:失败
      • 绿色:成功
      • 一般我们会使用断言操作来处理结果
        • Assert.assertEquals(期望的结果,运算的结果);
    • 补充:

      • @Before:
        • 修饰的方法会在测试方法之前被自动执行
      • @After:
        • 修饰的方法会在测试方法执行之后自动被执行

反射:框架设计的灵魂

  • 框架:半成品软件。可以在框架的基础上进行软件开发,简化编码

  • 反射:将类的各个组成部分封装为其他对象,这就是反射机制

    • 好处:
      1. 可以在程序运行过程中,操作这些对象。
      2. 可以解耦,提高程序的可扩展性。
  • 获取Class对象的方式:

    1. Class.forName(“全类名”):将字节码文件加载进内存,返回Class对象
      • 多用于配置文件,将类名定义在配置文件中。读取文件,加载类
    2. 类名.class:通过类名的属性class获取
      • 多用于参数的传递
    3. 对象.getClass():getClass()方法在Object类中定义着。
      • 多用于对象的获取字节码的方式
    • 结论:
      同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次,不论通过哪一种方式获取的Class对象都是同一个。
  • Class对象功能:

    • 获取功能:
      1. 获取成员变量们

        • Field[] getFields() :获取所有public修饰的成员变量

        • Field getField(String name) 获取指定名称的 public修饰的成员变量

        • Field[] getDeclaredFields() 获取所有的成员变量,不考虑修饰符

        • Field getDeclaredField(String name)

      2. 获取构造方法们

        • Constructor<?>[] getConstructors()

        • Constructor getConstructor(类<?>… parameterTypes)

        • Constructor getDeclaredConstructor(类<?>… parameterTypes)

        • Constructor<?>[] getDeclaredConstructors()

      3. 获取成员方法们:

        • Method[] getMethods()

        • Method getMethod(String name, 类<?>… parameterTypes)

        • Method[] getDeclaredMethods()

        • Method getDeclaredMethod(String name, 类<?>… parameterTypes)

      4. 获取全类名

        • String getName()
  • Field:成员变量

    • 操作:
      1. 设置值

        • void set(Object obj, Object value)
      2. 获取值

        • get(Object obj)
      3. 忽略访问权限修饰符的安全检查

        • setAccessible(true):暴力反射
  • Constructor:构造方法

    • 创建对象:
      • T newInstance(Object… initargs)

      • 如果使用空参数构造方法创建对象,操作可以简化:Class对象的newInstance方法

  • Method:方法对象

    • 执行方法:

      • Object invoke(Object obj, Object… args)
    • 获取方法名称:

      • String getName:获取方法名
  • 案例:

    • 需求:写一个"框架",不能改变该类的任何代码的前提下,可以帮我们创建任意类的对象,并且执行其中任意方法
      • 实现:
        1. 配置文件
        2. 反射
      • 步骤:
        1. 将需要创建的对象的全类名和需要执行的方法定义在配置文件中
        2. 在程序中加载读取配置文件
        3. 使用反射技术来加载类文件进内存
        4. 创建对象
        5. 执行方法

注解:

  • 概念:说明程序的。给计算机看的

  • 注释:用文字描述程序的。给程序员看的

  • 定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

  • 概念描述:

    • JDK1.5之后的新特性
    • 说明程序的
    • 使用注解:@注解名称
  • 作用分类:
    ①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】
    ②代码分析:通过代码里标识的注解对代码进行分析【使用反射】
    ③编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Override】

  • JDK中预定义的一些注解

    • @Override :检测被该注解标注的方法是否是继承自父类(接口)的
    • @Deprecated:该注解标注的内容,表示已过时
    • @SuppressWarnings:压制警告
      • 一般传递参数all @SuppressWarnings(“all”)
  • 自定义注解

    • 格式:
      元注解
      public @interface 注解名称{
      属性列表;
      }

    • 本质:注解本质上就是一个接口,该接口默认继承Annotation接口

      • public interface MyAnno extends java.lang.annotation.Annotation {}
    • 属性:接口中的抽象方法

      • 要求:
        1. 属性的返回值类型有下列取值

          • 基本数据类型
          • String
          • 枚举
          • 注解
          • 以上类型的数组
        2. 定义了属性,在使用时需要给属性赋值

          1. 如果定义属性时,使用default关键字给属性默认初始化值,则使用注解时,可以不进行属性的赋值。
          2. 如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可。
          3. 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}可以省略
    • 元注解:用于描述注解的注解

      • @Target:描述注解能够作用的位置
        • ElementType取值:
          • TYPE:可以作用于类上
          • METHOD:可以作用于方法上
          • FIELD:可以作用于成员变量上
      • @Retention:描述注解被保留的阶段
        • @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
      • @Documented:描述注解是否被抽取到api文档中
      • @Inherited:描述注解是否被子类继承
  • 在程序使用(解析)注解:获取注解中定义的属性值

    1. 获取注解定义的位置的对象 (Class,Method,Field)
    2. 获取指定的注解
      • getAnnotation(Class)
        //其实就是在内存中生成了一个该注解接口的子类实现对象

          public class ProImpl implements Pro{
              public String className(){
                  return "cn.itcast.annotation.Demo1";
              }
              public String methodName(){
                  return "show";
              }
          }
        
    3. 调用注解中的抽象方法获取配置的属性值
  • 案例:简单的测试框架

  • 小结:

    1. 以后大多数时候,我们会使用注解,而不是自定义注解
    2. 注解给谁用?
      1. 编译器
      2. 给解析程序用
    3. 注解不是程序的一部分,可以理解为注解就是一个标签
YOLOv11改进 | 注意力篇 | YOLOv11引入CA注意力机制 摘要:最近关于移动网络设计的研究已经证明了通道注意力(例如,挤压和激励注意力)对于提升模型性能的显着有效性,但它们通常忽略了位置信息,而位置信息对于生成空间选择性注意力图很重要。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~3.2 在Extramodule里创建CA。在CA.py文件里添加给出的CA代码。 阅读详情

相关推荐

ubuntu通过qemu安装银河麒麟V10_Arm_v8 (kylin_v10_飞腾/鲲鹏版)

一、windows下安装vmware虚拟机 二、ubuntu下载地址 https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ubuntu-20.04.3-live-server-amd64.iso 三、vmware中新建虚拟机,并使用ubuntu-20.04.3-live-server-amd64.iso作为启用盘 。。。在虚拟机中安装ubuntu(略) 四、配置ssh(如果ssh登录不上时配置) 修改openssh的配置 vi /etc/s

u010533742的博客 8703

Java基础(JDK14安装及简单Java程序)

​ 1.下载 用户可以登录官方网站 Java Downloads | Oracle https://www.oracle.com/java/technologies/downloads/ 免费下载Java SE提供的JDK。 作者使用Windows操作系统(64位机器),因此下载的版本为x64 Compressed Archive(Gjdk-14.0.1_windows-x64_bin.zip),如果读者使用其他的操作系统,可以下载相应的JDK。

qq_62522027的博客 6212

动态对抗Zygisk-IL2CppDumper:Unity游戏安全新策略

本文深入探讨了对抗Zygisk-IL2CppDumper攻击的Unity游戏安全新策略。通过实时内存监控、动态混淆技术和异常行为检测体系,有效防止关键代码被动态提取。文章详细介绍了内存指纹系统、运行时混淆方案和五维特征模型等实用防御手段,帮助开发者提升游戏安全性。

weixin_29325955的博客 305

JavaSE14——面向对象_封装

封装是面向对象的三大特征之一,面向对象编程语言是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性类:类是Java封装的基础,它是一种用户自定义的数据类型,用于描述具有相同属性和行为的对象。访问修饰符:Java提供了四种访问修饰符来控制对类、属性和方法的访问权限。其中,private。

tonyshi1989的博客 324

SAP 系统和银行系统通过 SM2 加密算法进行集成

SM2 是基于椭圆曲线离散对数问题(ECDLP)的一种公钥密码算法。椭圆曲线加密的核心原理,是利用了一个数学难题:在椭圆曲线群上,已知曲线上两点的运算结果,逆向推导出这两个点的具体信息是非常困难的。这样的复杂度使得基于椭圆曲线的密码体制比传统的 RSA 更加难以破解。在 SM2 加密中,公钥和私钥的生成与传统的椭圆曲线加密类似。选择一个椭圆曲线和一个基点 P。使用私钥 d,计算公钥 P’ = d * P。私钥 d 保密,而公钥 P’ 可公开分发,用于加密数据。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1211

第1课:开篇扫盲——OpenClaw是什么?能帮你解决什么问题?(入门必看)

核心目标:学会安装、卸载、管理OpenClaw技能,自定义AI代理的性格与权限,让AI贴合自己的使用习惯。核心内容技能市场详解:ClawHub市场核心技能分类(办公、学习、开发、生活),热门技能推荐(web-search、文件处理、邮件管理)[superscript:3][superscript:4]。技能安装与卸载:终端命令实操(openclaw skill install/uninstall),技能更新与版本管理[superscript:3]。

从零开始,掌握网络安全。提供全面的网络安全教程、攻防演练技巧和行业动态。 1754

JavaSE-14笔记【反射机制(+2024新)】

反射机制是JDK中的一套类库,这套类库可以帮助我们操作/读取class文件,反射机制可以让程序更灵活,后期学习的大量java框架底层都是基于反射机制实现的,需要能够熟练地使用反射机制中的方法。

weixin_45041745的博客 671

借助AI高效写出结构严谨、内容专业的课题申报书:10大核心模块拆解(附实用提示词)

在很多老师和科研人员眼中,写一份高质量的课题申报,确实是一件非常困难的事。难就难在不只是要说清楚写了什么研究内容,还要体现申报书的可行性和创新性。七哥除了自己写课题,也经常指导会员同仁使用高级学术版搞定课题的申报工作,摸索出了一套行之有效的借助AI申报课题的技巧,在这篇文章中,我将给大家点明课题申报书的10大核心模块的写作技巧,还会给大家一些提示词模板供大家参考,如果你也正准备申报课题,那么这篇文章一定不要错过!特别说明的是,提示词的使用并不是一蹴而就的,是专业思考的延伸和AI化专业表达,过程中需要多次的调

智能AI让学术科研更容易 441

java怎么安装_Win10 下载安装配置Java SE 14版本

JDK:Java Development Kit,Java开发工具包。本文档以官网下载Java SE 14版本为例,详细介绍如何下载安装JDK。下载JDK:第一步,打开浏览器,访问官网:https://www.oracle.com/,点击menu菜单,选择“Developer Center”,如下图所示:图 1 Menu菜单列表第二步,点击“Downloads”下拉菜单,选择“Java SE”,如...

weixin_39638057的博客 437

基于Qt C++开发一套大疆农业无人机的AI飞控系统

如果需要补充**多机协同作业代码**、**农田测绘数据导出**、**作业数据统计大屏**或**移动端地面站适配**功能,可以告知具体需求,我会针对性完善。"开启" : "关闭") << "喷洒,流量:" << flowRate << "L/min";emit errorOccurred(QString("SDK初始化失败,错误码:%1").arg((int)ret));report += QString("问题区域数量:%1\n").arg(info.problemAreas.size());

寒寒豆豆软件公司的博客 380

多智能体系统在AI物流优化中的实际应用案例

订单波峰波谷难应对(如双11订单量暴增300%);动态干扰难处理(如突发交通拥堵、客户临时改地址);全局优化难实现(单辆车最优≠整体最优)。本文聚焦“多智能体系统(MAS)”这一AI技术,讲解其如何通过“群体智能”破解物流调度难题,并结合实际案例展示落地效果。本文从“生活故事→核心概念→技术原理→实战案例→未来趋势”逐步展开,用“快递员团队协作送外卖”类比MAS运作,结合Python代码模拟任务分配,最后通过某物流企业的真实项目验证效果。

AIGC应用创新大全的博客 1630

JSR-000389 JavaTM SE 14是Java平台标准版(Standard Edition)的第14个主要版本

如果需要在旧代码中使用文本块,只需确保你的开发环境支持Java 14或更高版本,并在项目的构建配置中指定正确的Java版本。Java 14中引入的文本块(Text Blocks)是一种新的字符串文字表示形式,它允许开发者在多行字符串中嵌入表达式,而无需使用传统的转义字符或字符串连接操作。尽管Java 14引入了文本块,但旧版本的字符串连接操作仍然有效,并且可以与文本块共存。:虽然文本块在编译时会被转换为字符串连接操作,但这种转换是由编译器自动完成的,对开发者来说是透明的,不会影响应用程序的性能。

[Blog][Domain] programb.blog.youkuaiyun.com 459

【SOUND】Linux音频子系统ASoC的驱动框架总分析

ALSA系统在芯片(ASoC)层的总体项目目标是为嵌入式芯片处理器(例如PXA2XX,AU1X00,IMX等)和便携式音频编解码器提供更好的ALSA支持。 在进入ASoC子系统之前,内核对SoC音频有一些支持,但是它有一些局限性:ASoC层旨在解决这些问题并提供以下内容特征 :为了实现这一切,ASoC基本上将嵌入式音频系统分为多个可重复使用的组件驱动程序:另外,这里提下OSS(Open Sound System)这个基本被弃用的音频框架。 可以参考Linux OSS架构声卡驱动框架 2.3 ASoC重要

wang 恒 的博客 1781

day14 Junit、反射、注解、动态代理

单元测试:就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。优点:①可以针对某个方法执行测试,也支持一键完成对全部方法的自动化测试,且各自独立。②不需要程序员去分析测试的结果,会自动生成测试报告出来。③拥有更强大的测试能力。使用步骤:1.将Junit框架的jar包导入到项目中(注意:IDEA集成了Junit框架,不需要我们自己手工导入了)2.编写测试类、测试类方法(注意:测试方法必须是公共的,无参数,无返回值的非静态方法)

qq_53453104的博客 139

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

day14-Junit、反射、注解、动态代理

3. 全部都设置暴力反射【设置访问权】【即使是private也可以访问】\2. 要用什么成员,就先获取对应的成员。\1. 先获取这个类的class对象。invoke(对象 ,参数…

uhb1223的博客 193

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Day20-【Java SE高级】单元测试 反射 注解 动态代理

需求:某个系统,有多个业务方法,请使用Junit单元测试框架,编写测试代码,完成对这些方法的正确性测试。可以右键模块,run all test自动化一键测试,可以点击测试类的运行运行该类的所有自动化测试。就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试。

没有人的博客 553

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

什么是Junit单元测试和Java反射 ?

文章目录Junit单元测试测试分类Junit使用:白盒测试Java反射1. 如何获取成员变量?2. 如何获取构造方法们?3. 如何获取成员方法们?4.如何获取类名?如何去写一个框架呢?CET4P245 Junit单元测试 测试分类 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 白盒测试:需要写代码的。关注程序具体的执行流程。 Junit使用:白盒测试 例如想测试一个已经写好的类 以往的方法是创建一个mian类然后new一个对象调用方法进行测试 有了单元测试就不用main方法可以运行自己

想带狗熊去吹风 205

反射、注解

day13【JUnit单元测试、反射、注解、动态代理、JDK8新特性】 今日内容 JUnit单元测试------->必须掌握 使用步骤 会使用JUnit里面的常用注解 反射------->必须掌握------>相对难点 获取类的Class对象------->重要 反射操作构造方法------->重要 反射操作成员方法------->重要 反射操作成员变量 注解------->必须掌握 使用注解------->重要 自定义注解以及注解解析 动

weixin_47395717的博客 138

单元测试、反射、注解、动态代理

3、Class对象或Method对象.getDeclaredAnnotation(注解名.class),获得注解对象。定义(作用):通过对象或类名获得相应字节码文件(.Class),并通过解析可获得该类中的所有属性、方法、构造。@BeforeClass:在所有测试方法之前只执行一次-----------》对应静态方法。@AfterClass:在所有测试方法之后只执行一次-----------》对应静态方法。作用:在不改变对象原有功能及层级结构的情况下对该对象的功能进行增强。

javaFrom0To100的博客 136

Day-09-Junit&注解&枚举

Day-09-Junit&注解&枚举 【1】软件测试的目的: 软件测试的目的是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程 【2】测试分类: (1)黑盒测试: 软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试。 (2)白盒测试: 软件的白盒测试是对软件的过程性细节做细致的检

流苏树的博客 289

【Java教程】Day7-09 注解(Annotation)解析:处理注释

Java中的注解(Annotation)是一种“轻量级”的元数据机制,它本身对代码的逻辑没有任何影响。你可以把注解看作是代码中的注释,但它们更像是“隐形的工具人”,默默地为你提供额外的信息,帮助框架或者工具更好地工作。所以,要获取方法参数的注解,你需要处理一个二维数组。记住,注解就像你代码中的隐形助手,虽然它们不会主动出击,但如果你知道如何调用它们,它们能为你节省不少力气!但最有趣的是,注解背后的逻辑,通常是开发者自己来编写的。这是最常用的注解类型。,我们可以在运行时读取注解,并做出相应的处理。

max202011161630的博客 423

反射

Junit Junit单元测试可以代替main方法的执行 Junit的使用方法: 在方法的上面添加注解@Test; 添加jar包 选中方法名,右击鼠标选择runas,点击JUnit Test 常用注解: 1.@Test:用于修饰需要测试的方法 1.@Before:在测试前执行 2.@After:在测试完后执行 获取Class对象的三种方式 public class Test { p...

一边工作一边考研 137

JAVASE进阶day15(单元测试,反射,类加载器)

将编译好的.class文件,加载到内存当中。

qq_65095414的博客 531

Junit单元测试

Day16 Junit单元测试用于取代main方法 Junit的框架使用: 作用:代替main方法 @Test 在方法上加 Junit框架中的三个注解: @Test 1.让普通的方法取代main方法 @Before 2.在@Test方法运行之前运行@After3.在@Test方法运行之后运行 **注解(Annotation)** 什么是注释: 给程序员看的 什

vampire_Violet的博客 354

JavaWeb学习-DAY1

Junit **黑盒测试:**不需要写代码,给输入值,看程序能否输出期望的值。 **白盒测试:**需要写代码,关注程序具体的执行流程。 @Test @Before @After 反射 框架(半成品软件)设计的灵魂

qq_52821374的博客 200

第20章-注解

注解(Annotation)是Java 5引入的重要特性,它为我们提供了一种在代码中添加元数据(metadata)的方式。注解本身不会改变程序的逻辑,但可以被编译器、开发工具或运行时框架读取和处理。现代Java开发中,注解无处不在:Spring的`@Autowired`、JUnit的`@Test`、Lombok的`@Data`等都是注解的典型应用。

qq_31762031的博客 198
上一篇: day17 Stream流和方法引用
下一篇: day01 tomcat&&servlet
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值