javaEE(单元测试、反射、动态代理、xml)
2022/6/24 14:20:38
本文主要是介绍javaEE(单元测试、反射、动态代理、xml),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
单元测试
- 最小的功能单元编写测试代码,java针对方法,检查方法的正确性
JUnit单元测试框架
@Test注解
public class A { @Test public void a(){ ..... } }
- 必须导入jar包
- 定义的测试方法必须是无参数无返回值的,且公开的方法
- 测试的方法要用@Test注解
注解
- @Test
- @Before 实例方法,每个测试方法之前执行
- @After 实例方法,每个测试方法之前执行
- @BeforeClass 静态方法,所有测试方法之前执行一次
- @AfterClass静态方法,在所有测试方法之后执行一次
初始化资源
释放资源
反射
是指对于任何一个Clss类,在运行是都可以直接得到这个类的全部成分
- 类构造对象:Constructor
- 类的成员变量对象:Filed
- 类的成员方法对象:Method
- 动态获取类的信息以及动态的调取类中的成分的能力称为java语言的反射机制
Class c = A.class;
获得类对象
Class类中的静态方法:
- forName(String className)
- 类名.class
- 对象.getClass()
main(){ Class c =Class.forName("com.hjz.entity.Student"); Class c =Student.class; Student s =new Student(); Class c = s.getClass(); }
获得构造器对象:
1.获得Class类对象
2.获得构造器对象
- Constructor<?> getConstructors()返回所有的构造器数组(只拿public)
- Constructor<?> getDeclredConstructors()返回所有的构造器数组,有就能拿到
- Constructor
getConstructors( Class<?>... paramerTypes)返回单个构造器 - Constructor
getDeclredConstructors( Class<?>... paramerTypes)
main(){ Class c =Student.class; Constructor[] cs = c.getConstructors(); Constructor[] cs = c.getDeclredConstructors(String.class,int.class);//有一个构造方法是啥用啥 }
创建对象:
- T newInstance(Object...initargs) 指定的构造器创建对象
- public void setAccesible(boolean flag) 设置为true 表示取消访问检查,进行暴力反射
main(){ Class c =Student.class; Constructor cs = c.getDeclredConstructors();//有一个构造方法是啥用啥 //反射会破坏封装性 cs.setAccesible(true);//是私有的 Student s = (Student)cs.new newInstance(); }
获得成员变量对象:
1.获得Class类对象
2.获得成员变量对象
- Filed[] getDeclredFileds()
- Filed getDeclredFiled(String name)
方法:
- getType()
main(){ Field agef =c.getDeclredFiled("age"); agef.setAccessible(true); Student s =new Student(); agef.set(s.18); int age = (int) agef.get(s); }
获得方法对象
- Method[] getMothod()
- Method getDeclredConstructor( ,String name,Class<?>... paramerTypes)
....和之前的一样
反射的作用
- 反射是在运行时使用的技术,此时集合泛型就不能产生约束了,此时是可以为集合存入其他任何类型的元素的
ArrayList<Integer> list =new ArrayList<>();
实际跑起来都是Arraylist的类型了,不用管Integer了
- 反射的通用框架
1.定义一个方法可以接受任意的对象
2.每次收到一个对象后,解析这个对象的全部成员变量
3.这个对象是任意的
4.遍历这个成员变量,提取成员变量的具体的值
5.把名称和值放到成员变量对应的文件里面
注解
JDK5 引入的标注
- 对java的类、方法、对象有特殊处理
自定义注解
public @interface 注解名称{ public属性名称 属性名()default 默认值; }
例子:
public @interface MyBook{ String name(); String[] authors(); double price(); }
public class a{ @MyBook(name="java",autors={"黑马","我的"},price=200) public void ss(){ } }
只有一个value属性可以写可以不写
元注解
注解上的注解
-
@Target:约束自定义注解只能在哪使用
发现ElementType是个枚举。属性作用如下:
TYPE:接口、类、枚举
FIELD:字段、枚举的常量
METHOD:方法
PARAMETER:方法参数
CONSTRUCTOR:构造函数
LOCAL_VARIABLE:局部变量
ANNOTATION_TYPE:注解
PACKAGE:包 -
@Retention:申明注解的生命周期
按生命周期来划分可分为3类:
1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃;
2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期;
3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在;
@Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface MyBook{ String name(); String[] authors(); double price(); }
注解解析
- Annotation:注解的顶级接口,注解都是Annotation的类型对象
- AnnotatedElement:给接口定义了注解解析相关的解析方法
动态代理(重点)
代理为对象的行为实现一些辅助操作:
有时间看吧
xml
xml解析---xpath解析技术
可扩展标记语言
数据表示格式
<?xml version="1.0" encoding="utf-8"> <--注释有且仅有一个-->
- <小于
- >大于
- & 和
- &apos 单引号
- " 引号
文档约束
- DTD
- schema
解析数据技术:Dom4J框架底层技术
- SAX解析
- DOM解析
数据检索技术XPath
- Dom4J需要进行全文检索,然后寻找资源
- Xpath技术适合数据检索
完结了我草终于2022.05.07
这篇关于javaEE(单元测试、反射、动态代理、xml)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-19永别了,微服务架构!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?