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

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 {
    @Test
    public 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.kler.cn/a/398161.html

相关文章:

  • AI 编程编辑器和工具
  • 动态规划-完全背包问题——322.零钱兑换
  • PETR/PETRv2/StreamPETR论文阅读
  • async 和 await的使用
  • 15-1.Java 网络编程之 InetAddress(InetAddress 常用静态方法、InetAddress 常用方法)
  • Python如何获取request response body
  • LeetCode 热题100(八)【二叉树】(3)
  • 深入剖析:Spring MVC与Struts的较量
  • 探秘 Nacos 服务注册与发现:微服务领域的创新驱动
  • golang使用etcd版本问题
  • 告别系统限制,一键关闭Windows Defender
  • 计算机视觉 1-8章 (硕士)
  • Electron 沙盒模式与预加载脚本:保障桌面应用安全的关键机制
  • 网络工程实验三:DHCP的配置
  • [UnLua]动态创建SceneCapture2d相机,并且添加渲染目标纹理
  • GA/T1400视图库平台EasyCVR视频融合平台HLS视频协议是什么?
  • DLL注入
  • 鸿蒙next版开发:音频并发策略扩展(ArkTS)
  • GoogleCloud服务器的SSH连接配置
  • [含文档+PPT+源码等]精品基于springboot实现的原生Andriod手机使用管理软件
  • VMware Tools工具安装脚本(CentOS Ubuntu)
  • 【微信小程序】用户房屋管理
  • 软硬互联——革新机器人非标产线智能制造
  • CSS Float(浮动)
  • 快速搭建Android开发环境:Docker部署docker-android并实现远程连接
  • 【大数据学习 | HBASE高级】hive操作hbase