重学java 85.Java反射、注解、枚举总结

凡事往好处想,人生便会豁达

                                       —— 24.6.24

一、Junit单元测试

1.概述:

        Junit是一个单元测试框架,可以代替main方法去执行其他的方法

2.使用

a.导入jar包

b.注解

        @Test —— 单独执行一个方法

        @Before —— 在@Test之前执行.有多少个@Test执行.@Before对应的方法就执行多少次

        @After —— 在@Test之后执行,有多少个@Test执行.@After对应的方法就执行多少次

二、类的加载机制

1.类的加载时机

a.new对象
b.new子类对象
c.执行main方法
d.调用静态成员
e.反射

2.类的加载机制 —— 双亲委派

三、反射

1.概述 -- 解剖class对象的技术

2.问题:能解剖class对象的啥呢?

a.解剖出成员变量:赋值

b.解剖出成员方法: 调用

c.解剖出构造方法: new对象

3.作用 -- 写出来的代码重灵活,更通用

4.获取Class对象

a.对象.getClass()

b.类名.class

c.Class.forName("类的全限定名")

5.反射构造

Constructor<?>[] getConstructors() ——> 获取所有public的构造

Constructor<T> getConstructor(Class<?>...parameterTypes) ——> 获取指定的public的构造

TnewInstance(Object...initargs) ——> 创建对象

Class类中的方法:new对象的快捷方式 —— T newInstance() ——> 根据空参构造创建对象

Constructor<?> getDeclaredConstructors() ——> 获取所有构造方法,包括private

Constructor<T> getDeclaredConstructor(类<?>...parameterTypes) ——> 获取指定构造,包括private

void setAccessible(boolean flag) ——> 修改访问权限

6.反射成员方法

a. Method[] getMethods() ——> 获取所有public的方法,包括父类中的public方法

b.Method getMethod(String name, Class<?..parameterTypes) 获取指定的public的成员方法

c.Object invoke(Object obj, Object... args) ——> 执行方法

d.Method[] getDeclaredMethods() ——> 获取所有的成员方法,包括private 的

e.Method getDeclaredMethod(String name,类<?>... parameterTypes) ——> 获取执行成员方法包括private

7.反射属性

a.Field[] getFields() ——> 获取所有public的属性
b.Field[] getDeclaredFields() ——> 获取所有属性,包括priavte的
c.Field getField(String name) ——> 获取指定public的属性
d.Field getDeclaredField(String name) ——> 获取指定属性,包括priavte的
e.void set(Object obj,Object value) ——> 为属性赋值,相当于javabean中的set方法
f.Object get(Object obj) ——> 获取属性值

四、注解

1.定义注解

 public @interface 注解名{}

2.定义属性

a.数据类型 属性名() ——> 此属性没有默认值,需要在使用注解的时候为其赋值
b.数据类型 属性名0) default 值 ——> 此属性有默认值,如果有需要,还可以二次赋值

3.注解的使用

1.注解的使用 —— 说白了就是为注解中的属性赋值
2.使用位置上 —— 在类上使用,方法上使用,成员变量上使用,局部变量上使用,参数位置使用等
3.使用格式:a.@注解名(属性名 =值,属性名=值...)
                     b.如果属性中有数组:@注解名(属性名 ={元素1,元素2...})

4.注解解析

a.boolean isAnnotationPresent(Class<?extends Annotation> annotationClass) ——> 判断指定位置上有没有指定的注解

b.getAnnotation(Class<T>annotationClass) ——> 获取指定的注解,返回值类型为获取的注解类型

5.元注解

a.概述 —— 控制注解的注解

b.@Target:控制注解的使用位置

c.@Retention:控制注解的生命周期加加载位置)

五、枚举

1.定义

public enum 枚举类名{}

2.枚举值

a.枚举值特点:都是static final,但是定义的时候不要写出来,写出来报错
写完所有的枚举值之后,最后加个;

枚举值名字要大写 ——> 开发习惯

b.使用:类名直接调用
c.注意:每一个枚举值都是当前枚举类的对象

3.构造 —— 都是private修饰的

4.使用场景 —— 表示对象的状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/34356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见排序算法及其C语言实现

排序算法在计算机科学中是一个非常重要的主题。本文将详细介绍几种常见的排序算法&#xff0c;包括快速排序、归并排序、堆排序、冒泡排序、选择排序、插入排序、桶排序和二分查找插入排序&#xff0c;并提供每种算法的C语言实现代码。 1. 快速排序&#xff08;Quick Sort&…

毫米波移动通信系统中的波束赋形—模数混合的波束赋形架构

模数混合的波束赋形将波束赋形分为了模拟波束赋形与数字波束赋形两部分&#xff0c;其模拟部分通过移相器实现&#xff0c;数字部分通过基带预编码实现&#xff0c;&#xff0c;其结构如图2所示。当射频链路数目NRF为1时&#xff0c;认为其是一种特殊的模数混合的波束赋形。 此…

【计算机视觉】人脸算法之图像处理基础知识【七】

直方图均衡化 直方图均衡化是一种常用的图像处理技术&#xff0c;用于改善图像的对比度&#xff0c;特别是在图像的细节被埋没在暗部或亮部区域时。通过重新分配图像的像素强度值&#xff0c;使得图像的整体对比度增强&#xff0c;从而让更多的细节变得可见。 import cv2 imp…

最小生成树模板(prim,heap-prim,kruskal)

prim 出圈法&#xff0c;时间复杂度 O ( n 2 ) O(n^2) O(n2) #include<iostream> #include<vector> using namespace std; #define MAX_N 5000 #define inf 100000000 struct edge{int v,w; }; vector<edge>e[MAX_N5]; int d[MAX_N5],vis[MAX_N5]; int n,m…

IO-Iink事件

IO-LINK事件功能 IO-Link的事件功能是其通信协议中的一项重要特性&#xff0c;主要用于传输设备的故障信息和维护信息。IO-Link支持三种数据类型&#xff1a;过程数据、参数数据和事件数据。其中&#xff0c;事件数据就是用于此目的。 当IO-Link设备&#xff08;如传感器或执…

NepnepxCATCTF Pwn-Chao

文章目录 参考类型混淆异常处理的栈回退机制虚表和类的恢复假想的程序结构逆向工程场景步骤解析 idabug检查找虚表strupsc_str()alloca异常逆向maindisplayupdatecreate 新东西exp和思路 参考 https://www.cnblogs.com/winmt/articles/17018284.html 类型混淆 关于C中由虚函…

Java中如何解决BadPaddingException异常?

Java中如何解决BadPaddingException异常&#xff1f; 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Java编程中&#xff0c;BadPaddingException异常是一个…

HarmonyOS Next开发学习手册——应用启动框架AppStartup

概述 AppStartup提供了一种简单高效的初始化组件的方式&#xff0c;开发者可以使用AppStartup来显示的设置组件的初始化顺序以及之间的依赖关系&#xff0c;支持异步初始化组件加速应用的启动时间。开发者需要分别为待初始化的组件实现AppStartup提供的 StartupTask 接口&…

DoubleSummaryStatistics 及其相关类之-简介

1. DoubleSummaryStatistics 使用简介 在Java 8中&#xff0c;DoubleSummaryStatistics 类被引入作为 java.util 包的一部分。它是一个用于收集统计数据&#xff08;如计数、最小值、最大值、和、平均值等&#xff09;的类&#xff0c;特别适用于处理 double 类型的数据。 Do…

【OpenGauss源码学习 —— (ALTER TABLE(修改表空间))】

ALTER TABLE&#xff08;列存删除列&#xff09; ALTER TABLE ... SET TABLESPACEExecChangeTableSpaceForRowTable 函数ATExecSetTableSpace 函数 ExecChangeTableSpaceForRowPartition 函数ATExecSetTableSpaceForPartitionP3 函数 ExecChangeTableSpaceForCStoreTable 函数C…

DeepSeek-Coder-v2击败GPT-4 Turbo,成为竞技场最强开源编码模型!

目录 01 编码与数学击败GPT-4 Turbo 02 深度求索&#xff1a;价格战的导火索 就在刚刚&#xff0c;竞技场排名再次刷新&#xff1a;深度求索的DeepSeek-Coder-v2成为竞技场最强开源编码模型&#xff01; 它在Coding Arena中已攀升至第4名&#xff0c;水平接近GPT-4 Turbo。 没…

mysql的information_schema浅析

information_schema 是 MySQL 中的一个虚拟数据库&#xff0c;它包含了关于 MySQL 服务器的所有元数据。 information_schema 作用 元数据管理&#xff1a;提供关于数据库、表、列、索引、权限等的信息。 性能优化&#xff1a;帮助了解数据库结构和索引使用情况&#xff0c;便…

Latex学习之“usefont”用法

Latex学习之“\usefont”用法 一、通俗的解释 \usefont 是 LaTeX 中的一个命令&#xff0c;用于在文档中临时改变字体&#xff0c;其基本语法如下&#xff1a; \usefont{字体编码}{字体族}{字体系列}{字体形状}这样看起来好像蛮抽象&#xff0c;你可能以及晕了&#xff0c;什…

QT中eventFilter的用途详解

QEventFilter 是 Qt 框架中的一个机制&#xff0c;用于拦截和处理事件。这在 Qt 的事件驱动模型中非常重要&#xff0c;因为它允许我们在事件到达目标对象之前捕获并处理它们。下面是对 QEventFilter 的详细解释&#xff0c;分为几个关键部分&#xff1a; 1. 事件处理机制 在…

Arduino称重传感器和 HX711 放大器(数字秤)

Arduino称重传感器和 HX711 放大器&#xff08;数字秤&#xff09; Arduino with Load Cell and HX711 Amplifier (Digital Scale) In this guide, you’ll learn how to create a digital scale with the Arduino using a load cell and the HX711 amplifier. First, you’l…

队列。。。

目的&#xff1a; 1&#xff0e;掌握队列存储结构的表示和实现方法。 2&#xff0e;掌握队列的入队和出队等基本操作的算法实现。 3&#xff0e;了解队列在解决实际问题中的简单应用。 要求&#xff1a; &#xff08;1&#xff09;根据输入的队列长度n和各元素值建立一个循环队…

Redis-使用 jedis 操作数据

文章目录 1、Jedis简介2、环境准备3、创建maven普通项目,导入如下依赖4、测试JAVA程序和Redis之间的通信 1、Jedis简介 "Jedis" 通常是作为 "Java Redis" 的缩写或简称来理解的。Java Embedded Data Structures Interface 表示 Java嵌入式数据结构接口 2、…

高德行政区查询-综合省市县三级选择跳转

一、需求&#xff1a; 需要使用高德地图进行省市县的一个选择&#xff0c;每选择一次就在地图上对选择的省市县进行定位并画出该区域的范围。 最终效果&#xff1a; 二、准备工作 高德的API的key&#xff1a;两种 三、完整页面代码 综合的是这两篇中的内容&#xff08;不…

19、删除链表的倒数第

1、题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&#xff1a;[]示例 …

Vue3从入门到精通

文章目录 前言为什么选择Vue框架Vue是什么?为什么要学习Vue? Vue简介Vue API风格选项式API(Options API)组合式API(Composition API) Vue开发前的准备创建Vue项目 Vue项目目录结构![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/0400cdd482704d4d9ffa8a3a6687b12…