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

龙岗网站建设公司网络服务/网站收录教程

龙岗网站建设公司网络服务,网站收录教程,南昌网站开发,建网站语言概述 ①Java的注解又称标注,它是程序的元数据,也是程序代码的标记,主要添加到程序代码上,作说明和解释。元数据是用来描述数据的一种数据。 ②Java中的注解可用于类、构造方法、成员变量、方法、参数等的声明中,注解…

概述

①Java的注解又称标注,它是程序的元数据,也是程序代码的标记,主要添加到程序代码上,作说明和解释。元数据是用来描述数据的一种数据。

②Java中的注解可用于类、构造方法、成员变量、方法、参数等的声明中,注解功能不影响程序正常运行,但是对编译器等辅助工具造成影响。

③注解可以在编译、加载类和运导,可以根据注解对数据进行相应的处理。

  • 使用反射功能,可以对程序代码进行分析;
  • 使用系统定主解,可以在编译时对程序进行检查;
  • 使用元注解,可以生成相应的文档。

④注解用在包、类、字段、方法、局部变量、方法参数等的前面,对这些元素进行说明和注释。注解可以自定义,也可以使用系统的注解。

系统注解

1、@Override

  • 用来修饰一个方法,这个方法必须是对父类中的方法的重写。如果一个方法没有重写父类中的方法,在使用这个注解时编译器将提示错误。被@Override注解的方法必须在父类中有同样的方法,编译才会通过。
  • 在子类中重写父类或接口的方法时,@Override并不是必须加上的,但是建议使用这个注解。在某些情况下,若修改了父类方法的名字,那么子类的方法将不再属于重写。由于没有@Override,编译器不会发现问题;但是如果有@Override,编译器就会检查注解的方法是否覆盖了父类的方法。
//步骤一:创建父类
public class Super {public void Method(){System.out.println("父类方法");}
}//步骤二:创建子类
public class Sub {public void method(){System.out.println("子类方法");}
}//步骤三:创建测试类
public class Test {public static void main(String[] args){Super sover = new Sub();sover.Method();  //由于多态存在,调用的是父类的Method(),父类的Method()没有被子类重写}
}
//使用@Override修饰子类的method(),表示这个方法是重写父类的方法
public class Sub {@Overridepublic void Method(){  //由于在父类找不到这个方法,会报错,应改成同名的Method()System.out.println("子类方法");}
}

2、@Deprecated

@Deprecated可以用来注解不再使用已经过时的类、方法和属性。如果代码使用了@Deprecated注解的类、方法和属性,编译器会给出警告。

当使用@Deprecated注解时,建议使用对应的@deprecated JavaDoc符号说明这个类、方法或属性过时的原因以及它的替代方案。

@Deprecated
/*
@deprecated 这个类存在缺陷,使用新的NewDeprecatedTest类替代它
*/
public class DeprecatedTest{
…//类体
}

3、@SuppressWarnings

@Suppress Warnings用来抑制编译器生成警告信息。它修饰的元素为类、方法、方法参数、属性和局变量。当一个方法调用了过时的方法或者进行不安全的类型转换时,编译器会生成警告,此时可以为这方法增加@SuppressWarnings注解,从而抑制编译器生成警告。该注解遵循就近原则。

import java.util.ArrayList;
import java.util.List;public class SuppressWarningsExample {@SuppressWarnings("unchecked")  // 抑制未检查的类型转换警告public static void main(String[] args) {List rawList = new ArrayList();  // 原始类型的使用rawList.add("Hello");rawList.add("World");// 这里的 cast 会产生警告,但我们用 @SuppressWarnings 抑制它List<String> stringList = (List<String>) rawList;  for (String s : stringList) {System.out.println(s);}}
}

自定义注解

在定义自定义注解时,不可以继承其他的注解或接口。@interface只用来声明一个注解,注解中的方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型。返回值的类型只能是基本类型、Class、String、Enum。可以通过default关键字声明参数的默认值。

[public | final] @interface 注解名
{

    数据类型 注解元素名() [default 默认值];//注解元素

}

  • 其中,关键字@interface表示声明一个自定义注解,“注解名”是合法的标识符。“注解元素”是无参数的方法,方法的类型表示注解元素的类型。
  • 如果只有一个注解元素,在注解元素名为value的情况下,在使用的时候就可以不写出注解元素名,出注解值即可。
  • 在使用目定义注解时,要将自定义注解放在需要注解的前一行或者同一行,并在自定义注解后的括号中写出注解元素的值。如果使用默认值,则可以不给出注解值。如果只有一个注解元素并且名位value,只需要给出值,不需要给出注解元素名。

注解元素的值

注解元素一定要有确定的值,可以在定义注解时指定它的默认值,也可以在使用注解时指定默认值,非基本类型的注解元素的值不能为null。因此,经常使用空字符串或0作为默认值。

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;//定义自定义注解
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时可用
@Target(ElementType.METHOD)        // 注解可以应用于方法
public @interface MyCustomAnnotation {String value() default "default value";
}//使用自定义注解
public class MyClass {@MyCustomAnnotation(value = "Hello, Custom Annotation!")public void myAnnotatedMethod() {System.out.println("Executing myAnnotatedMethod.");}
}//反射获取注解信息
import java.lang.reflect.Method;public class AnnotationProcessor {public static void main(String[] args) {try {MyClass myClass = new MyClass();Method method = myClass.getClass().getMethod("myAnnotatedMethod");// 检查方法是否有自定义注解if (method.isAnnotationPresent(MyCustomAnnotation.class)) {MyCustomAnnotation annotation = method.getAnnotation(MyCustomAnnotation.class);System.out.println("Annotation value: " + annotation.value());}myClass.myAnnotatedMethod(); // 执行方法} catch (Exception e) {e.printStackTrace();}}
}

元注解

Java 5.0 API的 java.lang.annotation 包中提供了4个标准的元注解类型,即@Target、@Retention、aDocumented和@Inherited。它们的作用是对其他注解类型进行注解

1、@Target

@Targett指定注解类型所作用的程序元素的种类。若注解类型声明中不存在Target元注解,则声明型可以用在任一程序元素上;若存在元注解,则编译器强制实施指定的类型限制。

@Target的取值是枚举类ElementType的成员(称为枚举常量)。

2、@Retention

@Retention的作用是指定需要在说明级别保留该注解信息,用于描述注解的声明周期,它取值是枚举类RetentionPolicy的成员。

3、@Docuriented

@Documented指示某一类型的注解将通过javadoc和类似的默认工具进行文档化。

4、@lnherited

继承是Java的一大特征,在类中除了private的成员以外都会被子类继承。默认情况下,父类注解是不会被子类继承的,只有使用元注解@Inherited的注解才可以被子类继承。

多重注解

在注解前使用@Repeatable允许同一类型的注解多次使用。

相关文章:

Java【注解】

概述 ①Java的注解又称标注&#xff0c;它是程序的元数据&#xff0c;也是程序代码的标记&#xff0c;主要添加到程序代码上&#xff0c;作说明和解释。元数据是用来描述数据的一种数据。 ②Java中的注解可用于类、构造方法、成员变量、方法、参数等的声明中&#xff0c;注解…...

基于安卓开发大型体育场管理系统的设计与实现(源码+定制+讲解)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

【Go】-Websocket的使用

目录 为什么需要websocket 使用场景 在线教育 视频弹幕 Web端即时通信方式 什么是web端即时通讯技术&#xff1f; 轮询 长轮询 长连接 SSE websocket 通信方式总结 Websocket介绍 协议升级 连接确认 数据帧 socket和websocket 常见状态码 gorilla/websocket实…...

怎么查看员工电脑安装了什么软件

1、使用专业监控软件&#xff1a;安装如金刚钻信息网站行为审计系统、WorkWin等专业的电脑监控软件。这些软件能够实时监控员工的电脑操作&#xff0c;包括安装的软件、运行的程序等。通过软件的管理端&#xff0c;您可以轻松查看员工电脑上安装的所有软件&#xff0c;并可以设…...

面积开运算bwareaopen

一个非常有用的二值图像形态学后处理算法&#xff0c;建立在连通分量分析的基础之上。 bwareaopen 从二值图像中删除小对象 语法 BW2 bwareaopen(BW,P) BW2 bwareaopen(BW,P,conn) 说明 BW2 bwareaopen(BW,P) 从二值图像 BW 中删除少于 P 个像素的所有连通分量&#x…...

TortoiseGit 下载和安装

下载 1&#xff0c;下载路径 Download – TortoiseGit – Windows Shell Interface to Git 2&#xff0c;选择windows64的&#xff0c; 3&#xff0c;下载完成后 安装 1&#xff0c;双击运行&#xff0c;点击next 2&#xff0c;点击next 3&#xff0c;点击next 4&#xff0…...

0x09 瑞友 应用虚拟化系统 GetBSAppUrl SQL注入漏洞 - 复现

参考:瑞友 应用虚拟化系统 GetBSAppUrl SQL注入漏洞 | PeiQi文库 (wgpsec.org) 漏洞描述 瑞友应用虚拟化系统中的 GetBSAppUrl 方法存在 SQL注入漏洞。由于请求参数未经过滤,攻击者可以利用此漏洞执行恶意SQL查询,从而获取数据库中的敏感信息。 漏洞影响 受影响版本:瑞友…...

C++(Qt)软件调试---内存调试器Dr.Memory(21)

C(Qt)软件调试—内存调试器Dr. Memory&#xff08;21&#xff09; 文章目录 C(Qt)软件调试---内存调试器Dr. Memory&#xff08;21&#xff09;[toc]1、概述&#x1f41c;2、安装Dr.Memory&#x1fab2;3、命令行使用Dr.Memory&#x1f997;4、Qt Creator集成使用Dr.Memory&…...

Python3自带HTTP服务:轻松开启与后台管理

Python3自带有http服务&#xff0c;可以在服务器&#xff0c;也可以在本地启动&#xff0c;并运行一些常用的网页程序。比如&#xff1a;我们可以把streamlit框架编写的网页放到服务器上&#xff0c;开启http服务&#xff0c;就可以通过网页来调用这个pythont程序了&#xff0c…...

传统行业选择企业大文件传输系统需要注意哪些?

数字化转型的洪流中&#xff0c;传统行业正经历着前所未有的挑战与机遇。随着数据量的激增&#xff0c;企业大文件传输系统的选型成为了一个至关重要的议题。今天小编将深入探讨传统行业在这一过程中的考量因素&#xff0c;并以镭速企业大文件传输系统为例&#xff0c;展示其如…...

如何配置路由器支持UDP

一、UDP协议简介 UDP是一种传输层协议&#xff0c;与TCP&#xff08;传输控制协议&#xff09;不同&#xff0c;它不需要建立连接&#xff0c;因此传输速度较快。由于UDP不需要确认数据包的接收状态&#xff0c;它适用于不需要严格数据完整性但需要低延迟的场景。 常见的UDP应…...

CorePress Pro 网站加载慢 WordPress

一般来说是你用了「CorePress天气模块」 解决方案&#xff1a;这个插件从你右侧边栏里删掉就可以了&#xff08;上方的图中已经是删掉后的效果了&#xff09; 寻找加载时间长的原因&#xff1a; 谷歌浏览器F12->网络->打开录制->ShiftF5 得出结论&#xff1a;和风天气…...

关于uniapp wifi调用走过的坑

1. uniapp老脚手架与uni-wif带来的兼容性问题 且几乎找不到解决方法 2. uni-wif需要插件市场安装 3.还有一种可以使用导入安卓类的方式&#xff0c;可以正常获取到已经连接ssid&#xff08;wifi名称&#xff09;&#xff0c;也可以获取到wifi列表 &#xff0c; 但ScanResul…...

docker学习笔记(1.0)

docker命令 下载镜像相关命令 检索&#xff1a;docker search 比如&#xff1a;docker search nginx 是查看有没有nginx镜像 后面的OK表示是不是官方镜像&#xff0c;如果有就是官方镜像&#xff0c;如果没有就是第三方的。 下载&#xff1a;docker pull 比如&#xff1a…...

如何高效管理知识产权全链条?

为了有效保护企业的创新成果&#xff0c;确保技术创意的顺利转化&#xff0c;以及高效管理知识产权案件&#xff0c;建立一套完善的知识产权管理体系至关重要。对于企业而言&#xff0c;如何有效地管理知识产权的各个环节&#xff0c;从研发项目到技术创意&#xff0c;再到提案…...

禾赛嵌入式面试题及参考答案(2万字长文)

TCP/IP 的连接建立(三次握手)和断开过程(四次挥手) 连接建立(三次握手): 第一次握手:客户端向服务器发送一个 SYN(同步)包,这个包中包含客户端选择的初始序列号(Sequence Number)。此时客户端进入 SYN_SENT 状态,表示客户端已发送 SYN 包等待服务器确认。 第二…...

C++进阶知识1继承

继承 1. 继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1 定义格式1.2.2 继承基类成员访问⽅式的变化 1.3 继承类模板 2. 基类和派⽣类间的转换3. 继承中的作⽤域3.1 隐藏规则&#xff1a; 4. 派⽣类的默认成员函数4.1 4个常⻅默认成员函数4.2 实现⼀个不能被继承的类 5. 继承…...

vue中使用exceljs和file-saver插件实现纯前端表格导出Excel(支持样式配置,多级表头)

实现&#xff1a;使用Excel.js库创建excel文件&#xff0c;然后再使用 file-saver库将 Excel 文件保存到用户的本地计算机。 1.安装&#xff0c;可以使用npm&#xff0c;yarn npm install exceljs npm install file-saver 2.封装生成excel的方法 // 封装exceljs const ExcelJ…...

C语言编写一个五子棋游戏-代码实例讲解与分析

编写一个完整的五子棋游戏&#xff08;Gomoku 或 Gobang&#xff09;在C语言中是一个相对复杂的任务&#xff0c;因为它涉及到用户界面的处理、游戏逻辑的维护以及可能的AI对手设计。在这里&#xff0c;我将提供一个简化的版本&#xff0c;这个版本将使用控制台来接收用户输入&…...

Linux——k8s组件

kubernetes 使用1.31.1 版本搭建集群核心组件&#xff0c;选择flannel 网络插件为整体集群的运行提供网络通信功能。 flannel 网络插件 kube-flannel kube-flannel-ds-9fgml 1/1 Running 1 (18m ago) 2d21h kube-flannel kube-flannel-ds-ghwbq …...

基于RustDesk自建远程桌面服务

最近向日葵越来越难用了&#xff0c;官方好像限制了免费用户的带宽&#xff0c;但是限制的有点过头了&#xff0c;卡的基本没法用。 向日葵的平替todesk对于免费用户又有时长限制&#xff0c;对于经常用的小伙伴不大友好。 咱也不是说非得白嫖&#xff0c;但是向日葵和todesk这…...

Devicenet从站数据 转profinet IO项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 网关用DEVICENET协议采集数据 3 5 用PROFINET IO协议转发数据 4 6 案例总结 7 1 案例说明 设置网关采集Devicenet从站设备数据把采集的数据转成profinet IO协议转发给其他系统。 2 VFBOX网关工作原理 VFBOX网关是协…...

C语言实现队列

队列 前言一、队列的结构1.实现思路2.代码结构 二、队列的实现1.初始化和销毁2.判空和获取队列大小3.入队列和出队列4.获取队头和队尾元素5.测试 总结每文推荐 前言 队列是一种特殊的线性表&#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操…...

Python使用scrapy创建项目爬虫步骤

一、安装导入 使用包管理器下载 pip install scrapy 二、创建Scrapy项目 首先需要进入你创建项目的目录下&#xff0c;打开cmd窗口或powershell窗口&#xff1a; scrapy startproject 项目名称&#xff08;英文&#xff09; 三、了解项目结构 scrapy.cfg # 项目的配置文件…...

长沙某公司.Net高级开发面试题

1.dot net core跟dot net比较有哪些更好的地方&#xff1f; 第一是跨平台&#xff0c;它可以运行在三大操作系统上面&#xff0c;windows&#xff0c; Linux和MAC。 第二是对架构本身安装没有依赖&#xff0c;因为所有的依赖都跟程序本身在一起。 第三是dot net core处理请求…...

物联网系统中声音拾取音频方案_咪头

01 物联网系统中为什么要使用咪头 物联网系统中使用咪头&#xff08;麦克风或传声器&#xff09;的原因主要可以归结为以下几个方面&#xff1a; 声音信号的拾取与转换 基本功能&#xff1a;咪头是一种将声音转换为电信号的装置。在物联网系统中&#xff0c;咪头负责捕捉周围…...

【题解】Codeforces Round 975 (Div. 2) A~E

A. Max Plus Size 分别假设答案为取第偶数位的最大值和取第奇数位的最大值两种情况, 取更优解. 取偶数位的最大值时, 把所有其他都偶数位都取上. 奇数同理. code: int solve(int _) {int n;cin >> n;vector<int>a(n 1);int Maxj 0, Maxo 0;for (int i 1; i …...

如何搞定视频裁剪?新手小白零基础剪辑,分享5个实用工具!

现在是一个短视频盛行的时代&#xff0c;几乎每个人都掌握了视频剪辑技能。 不管是因为工作也好&#xff0c;生活也罢&#xff0c;只要有视频&#xff0c;那么就一定会用到视频剪辑软件。视频裁剪已经难不倒普通人了&#xff0c;借助专业的视频裁剪工具&#xff0c;任何人都可…...

HttpClientHandler 详解及使用

在现代网络编程中&#xff0c;HttpClientHandler 是一个至关重要的组件&#xff0c;它提供了对 HTTP 请求的底层配置和控制。本文将详细介绍 HttpClientHandler 的核心概念、配置选项以及如何在实际应用中使用它。 1. 什么是 HttpClientHandler&#xff1f; HttpClientHandle…...

基于两分支卷积和 Transformer 的轻量级多尺度特征融合超分辨率网络 !

当前的单图像超分辨率&#xff08;SISR&#xff09;算法有两种主要的深度学习模型&#xff0c;一种是基于卷积神经网络&#xff08;CNN&#xff09;的模型&#xff0c;另一种是基于Transformer的模型。前者利用不同卷积核大小的卷积层堆叠来设计模型&#xff0c;使得模型能够更…...