首页 > 编程语言 >[java]高级技术

[java]高级技术

时间:2024-12-19 09:29:22浏览次数:5  
标签:java 对象 成员 高级 技术 获取 测试 注解 方法

单元测试

概述: 针对最小的功能单元(方法), 编写测试代码对其进行正确性测试

手动测试的问题

只能在main方法中编写测试代码

无法实现自动化测试, 一个方法测试失败, 会影响其他方法的测试

没有测试报告, 需要自己观察测试结果

Junit框架

用来对方法进行测试, 第三方公司开源的, 已经集成在IDEA中

优势:

可以灵活的编写代码, 可以针对某个方法执行测试,

也可以一键完成全部方法的自动化测试, 且每个方法各自独立,

自动生成测试报告

快速入门

为需要测试的业务类, 定义对应的测试类,

并为每个业务方法, 编写对应的测试方法(公共, 无参, 无返回值)

测试方法上声明@Test注解, 然后再测试方法中调用被测的业务方法,

Alt+enter => "JUnit4"

执行测试方法

执行指定方法: 选择方法, 右键Run运行

执行指定类的方法: 右键Run运行

执行全部的方法: 选择项目,右键"Run All Tests"

结果断言: Assert.assertEquals(3, index);

通过预测运行结果测试方法是否符合需求

常见注解

反射

反射就是拿到类文件, 然后以编程的方式操作类的成员

目的

加载类, 获取类的字节码: Class对象

方法1

Class c1 = 类名.class

方法2

Class.ForName("类的全名")

方法3

对象.getClass()

获取类的构造器: Constructor对象

获取类的构造器

使用构造器初始化对象

获取类的成员变量: Field对象

获取类中的成员变量

为成员变量取值/赋值

获取类的成员方法: Method对象

获取类的成员方法

执行方法

作用

得到一个类的全部成分然后操作

可以破坏封装性

主流的Java框架都会用到反射技术设计通用的功能

案例: 保存文件

定义一个方法, 接收任意对象

通过反射获取对象的Class对象, 然后获取全部的成员变量

遍历成员变量, 然后提取成本成员变量的值

把成员变量名, 变量值, 写入到文件中

注解

Java代码中的特殊标记,作用是让程序根据注解信息执行代码

注解可以用在类, 构造器, 方法, 成员变量, 参数,

自定义注解

public @interface 注解名称 {

public 属性类型 属性名() default 默认值;

}

特殊属性名: value

如果注解中只有一个value属性, 使用该注解时, value的名称可以不写

注解的本质是一个接口, java中的所有注解都继承了Annotation接口

@注解(,..)其实就是一个实现类对象, 实现了该注解以及Annotation接口

元注解

修饰注解的注解

注解解析

判断类/方法/成员变量上是否存在注解, 并把注解里的内容解析出来

步骤

要解析谁上面的注解, 就应该先拿到谁

比如要解析类上面的注解, 就应该先获取该类的class对象, 在通过class对象解析其上面的注解

比如要解析成员方法上的注解, 就应该获取该成员方法的Method对象, 再通过method对象解析其上面的注解

Class Method Field Constructor 都实现了AnnotatedElement接口, 它们都有解析注解的能力

案例: 模拟Junit框架

动态代理

作用: 如果对象嫌身上干的活太多, 可以通过代理转移部分职责

前提:

对象有什么方法想被代理, 代理就一定要有对应的方法

中介怎么知道 对象需要被代理 的方法 有哪些? 通过接口

创建

java.lang.reflect.Proxy类: 提供了为对象产生代理对象的方法

案例: 优化代码

标签:java,对象,成员,高级,技术,获取,测试,注解,方法
From: https://blog.csdn.net/CSDN20221005/article/details/144550945

相关文章

  • java位运算实现加减乘除
    纯用位运算实现加减乘除,涉及一些基础的位运算知识,代码注释里都已经写清楚。publicclassBitOperationCalculate{publicintadd(inta,intb){//a+b=(a^b)+(a&b)<<1=a`+b`=(a`^b`)+(a`&b`)<<1直到b`为0,此时的a就是结果//a`=a^b(a异或b)b`=(a&b)<......
  • Java学习,查找数组重复元素
    Java中查找数组中的重复元素可以通过多种方法实现,包括使用额外的数据结构(如 HashSet)来跟踪已经遇到的元素,或者使用嵌套循环来比较数组中的每一对元素。使用 HashSet查找:publicclassFindDuplicates{  publicstaticvoidmain(String[]args){    int[]......
  • Java学习,删除数组元素
    Java中数组的长度是固定的,这意味着不能,直接从一个数组中删除元素并期望数组自动调整其大小。可以通过几种方式,来实现删除数组元素的效果。创建一个新数组:publicclassRemoveArrayElement{  publicstaticvoidmain(String[]args){    int[]array={1,2......
  • 浅谈Java注解之Component
    一、Component的介绍@Component是Spring框架中的一个注解,用于将一个类标识为Spring容器中的一个组件,通常用于定义一个服务、工具类或者帮助类。这个注解会告诉Spring框架这个类需要被纳入Spring的IoC(控制反转)容器进行管理。二、Component的特点1、自动注册:被@Component注解......
  • 浅谈Java注解之Autowired
    一、Autowired的介绍@Autowired是Spring框架中的一个注解(Annotation),用于实现依赖注入(DependencyInjection,DI)。它告诉Spring容器在创建bean的时候,自动注入相关的依赖。二、Autowired的特点1、自动注入:@Autowired允许Spring容器在运行时自动将bean的依赖项注入到bean中。......
  • 浅谈Java注解之Builder
    一、Builder的介绍@Builder是Lombok库提供的一个注解,用于自动生成建造者模式(BuilderPattern)所需的代码。建造者模式是一种设计模式,用于创建复杂对象,它将对象的构造与表示分离,使得同样的构造过程可以创建不同的表示。通过@Builder注解,可以简化对象的构建过程,避免手动编写大量......
  • Java学习,数组反转
    Java反转数组,既将数组中的元素顺序颠倒,可以通过创建一个新的数组来存储反转后的元素,或者原地(in-place)反转数组,即不使用额外的数组空间。使用新数组创建一个新的数组,并按照原数组的反向顺序将元素复制到新数组中:publicclassReverseArrayExample1{  publicstaticvo......
  • 2024实测验证可用的股票数据接口集合.:python、JavaScript 、JAVA等实例代码演示教你如
    实测可用的股票数据接口,可以直接点击在浏览器中验证:沪深两市股票列表API接口链接(可点击验证):https://api.mairui.club/hslt/list/b997d4403688d5e66a【实时数据接口】沪深两市实时交易数据接口API接口链接(可点击验证):https://api.mairui.club/hsrl/ssjy/000001/b997d4403......
  • 人工智能与基因编辑技术在高效作物培育中的应用
    一、引言在当今科技飞速发展的时代,人工智能(AI)和基因编辑技术成为了推动农业变革的两大关键力量。随着全球人口的不断增长和对粮食需求的日益增加,培育高效作物成为解决粮食安全和可持续发展问题的重要途径。人工智能和基因编辑技术的结合为实现这一目标带来了前所未有的机遇。......
  • java集合框架的详细学习
     集合框架和数组的区别为什么引入集合概念使用数组具有局限性:是一种固定大小的数据结构,其元素类型和数量在创建时就已经确定,并且无法更改,不使用就浪费了。为了解决数组的局限性,引入容器类的概念。容器可以根据需要动态地增加或减少元素。此外,集合框架还提供了丰富的操作方......