注解复习(java)

文章目录

    • 注解
      • 内置注解
        • **@Deprecated**
        • @Override
        • @SuppressWarnings【不建议使用】
        • @Funcationallnterface
      • 自定义注解
      • 元注解
        • @Retention
        • @Target
        • @Documented
        • @Inherited 和 @ Repeatable
      • 反射注解

前言笔记基于动力节点

注解

  • 注解可以标注在 类上,属性上,方法上等。
  • 注解可以做到在不改变代码逻辑的前提下在代码中嵌入补充信息

注解:给编译器看的,或给其他程序看的,程序根据有没有这个注解来决定不同的处理方式

框架 = 反射 + 注解 + 设计模式

内置注解

在这里插入图片描述

@Deprecated
/** JDK 的内置注解:@Deprecated* 1. 被这个注解标注的元素已过时* 2. 这个注解是给编译器看的,编译器看到这个注解之后会有警告提示信息* 3. 可以标注属性,方法,类*/public class Test {//这里有警告MyClass1 myClass1 = new MyClass1();
}@Deprecated
class MyClass1 {// since 属性表示从哪个版本开始已过时// forRemoval 属性值如果是 true 表示已移除@Deprecated(since = "9", forRemoval = true)public static int num = 100;@Deprecatedpublic void doSoms() {}
}

在这里插入图片描述



@Override
/** JDK 的内置注解:@Override* 1. 给编译器看的* 2. 这个注解标注实例方法,被标注的方法必须是重写父类的方法* 3. 这个注解就是在编译阶段进行方法检查,检查这个方法是否重写了父类,如果没有重写父类报错* 4. 只能标注实例方法*/public class Test extends myclass{@Overridevoid test() {}
}class myclass {void test() {};
}


@SuppressWarnings【不建议使用】
/** JDK 的内置注解:@SuppressWarnings* 1. 主要作用:抑制警告* 2. 该注解常见的属性值*     rewtypes: 抑制未使用的泛型的警告*     resource: 抑制未关闭资源的警告*     deprecation: 抑制使用了已过时资源的警告*     all: 抑制所有警告*/public class Test {public static void main(String[] args) throws FileNotFoundException {//取消没用泛型的警告@SuppressWarnings("rawtypes")List list = new ArrayList();//取消没关流的警告@SuppressWarnings("resource")FileInputStream in = new FileInputStream("e:\\file.txt");}
}


@Funcationallnterface

检查是否符合 “函数式接口” 的特征

/** JDK 的内置注解:@Functionallnterface* 1. 这个注解专门用来标注接口的* 2. 被标记的接口必须是一个函数式接口,如果不是函数式接口,编译器报错* 3. 这个注解也是给编译器看的* 4. 函数式接口:接口中抽象方法有且仅有一个
*/
public class Test {public static void main(String[] args) throws FileNotFoundException {}
}@FunctionalInterface
interface T {void fly();
}


自定义注解

使用 @interface 来定义注解

默认情况下可以出现在类,方法,属性,构造方法,方法参数上

所有自定义注解,父类是:java.lang.annotation.Annotation

在这里插入图片描述

public @interface MyAnnotation {/*** 注解也可以定义属性,属性名后面必须添加 ()*///属性String drive();String url();String[] ab();
}
public class Test {public static void main(String[] args){//使用注解@MyAnnotation(drive = "aaa",url = "abc",ab = {"1,2,3"},)int i = 10;}
}



元注解

在这里插入图片描述



@Retention

在这里插入图片描述

@Retention(value = RetentionPolicy.SOURCE)
@Retention(value = RetentionPolicy.CLASS)
@Retention(value = RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
}


@Target

在这里插入图片描述



@Documented

在这里插入图片描述

被这个注解声明的注解,可以生成帮助文档



@Inherited 和 @ Repeatable

在这里插入图片描述




反射注解

在这里插入图片描述

  • field.isAnnotationPersent(AnnotationTest02.class)判断有没有这个注解
  • AnnotationTest02 an = field.getAnnotation(AnnotationTest02.class):获取注解

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

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

相关文章

opencv颜色识别,hsv采用滑块调节

识别效果如图所示,尽量排除了蓝色背景的干扰,hsv可用滑块进行调节,更加方便 import cv2 import numpy as np# 创建一个命名窗口,用于显示滑块 cv2.namedWindow("TrackBar")def nothing(x):pass# 创建滑块控件 cv2.cre…

Python深度学习

原文链接:Python深度学习https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247608512&idx1&sn16e2a0bb6b0a1f6b513be173730090c0&chksmfa826927cdf5e031b702deb04eef5cb0055f65b0d6e4c33588949ee81c7380ee044caeafd8c7&token2068755524&am…

arp缓存中毒实验

文章目录 一、相关知识1.什么是arp(地址解析协议)2.什么是免费arp(1)简介(2)主要应用(3)代码 3.什么是arp缓存中毒(1)简介(2)过程&…

24吉林事业单位报名照上传通过别忘了这一步

24吉林事业单位报名照上传通过别忘了这一步 #吉林事业单位 #吉林三支一扶 #吉林事业编 #事业单位报名照片 #吉林事业单位考试 #吉林市事业单位

泛微E9开发 控制Radio框字段打印是否仅显示选中项文字

控制Radio框字段打印是否仅显示选中项文字 1、需求说明2、实现方法3、扩展知识点控制Radio框字段打印是否仅显示选中项文字格式参数说明样例 1、需求说明 当我们对单选框进行打印时,往往会把所有的选项一起打印出来(如下图所示),现…

【AIGC】一、本地docker启动私有大模型

本地docker启动私有大模型 一、最终效果中英文对话生成代码 二、资源配置三、搭建步骤启动docker容器登录页面首次登录请注册登录后的效果 配置模型尝试使用选择模型选项下载模型选择适合的模型开始下载 试用效果返回首页选择模型中英文对话生成代码 四、附录资源监控 五、参考…

Redis过期策略

过期的key集合 Redis会将每个设置了过期时间的key放入到一个独立的字典中,以后会定时遍历这个字典来删除到期的key。除了定时遍历之外,他还会使用惰性策略来删除过期的key,所谓惰性策略就是在客户端访问这个key的时候,redis对key…

[C++] 由C语言过渡到C++的敲门砖

命名空间 在C/C中,变量、函数和后⾯要学到的类都是⼤量存在的,这些变量、函数和类的名称将都存在于全局作⽤域中,可能会导致很多冲突。使⽤命名空间的⽬的是对标识符的名称进⾏本地化,以避免命名冲突或名字污染 。 在同一个工程中…

Python基础-成年人判断(if条件语句联系)

注意输入的年龄需要转化为字符串 代码: print("欢迎来到游乐场:儿童免费,成人收费") age int(input("请输入你的年龄:")) if age>18:print("你已经成年,需要补票10元") # 四个空格缩进print…

使用ssh服务器管理远程主机

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、配置网卡服务 1、配置网卡参数 2、创建网络会话 3、绑定两块网卡 二、远程控制服务 1、配置sshd服务 2、在Windows连接 3、安全密钥…

数据仓库哈哈

数据仓库 基本概念数据库(database)和数据仓库(Data Warehouse)的异同 整体架构分层架构方法论ER模型(建模理论)维度模型 何为分层第一层:数据源(ODS ER模型)设计要点日志…

Studying-代码随想录训练营day34| 62.不同路径、63.不同路径II、343.整数拆分、96.不同的二叉搜索树

第34天,动态规划part02,牢记五部曲步骤,编程语言:C 目录 62.不同路径 63.不同路径II 343.整数拆分 96.不同的二叉搜索树 总结 62.不同路径 文档讲解:代码随想录不同路径 视频讲解:手撕不同路径 题目…

源码编译构建LAMP(企业网站架构部署与优化)

部署LAMP平台 LAMV架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包 括 Linux操作系统,Apache网站服务器、MySQL数据库服务器、P…

【Python】基础语法体系:两种常用语句

个人主页:【😊个人主页】 系列专栏:【❤️Python】 文章目录 前言条件语句动态实例if语句if-else 语句if-elif-else 语句嵌套条件语句 循环语句for循环while循环 动态实例嵌套循环 前言 Python语句是构成Python程序的基本单元,用…

C++之goto陈述

关键字 goto用于控制程式执行的顺序&#xff0c;使程式直接跳到指定标签(lable) 的地方继续执行。 形式如下 标签可以是任意的识别字&#xff0c;后面接一个冒号。 举例如下 #include <iostream>int main() {goto label_one;label_one: {std::cout << "Lab…

【漏洞复现】29网课交单平台 SQL注入

声明&#xff1a;本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动&#xff0c;将与本文档的作者或发布者无关。 一、漏洞描述 29网课交单平台是一个在线学习平台&#xff0c;用于帮助学生完成网络课程的学习任务。这个平台提供了包括…

Transformer中的编码器和解码器结构有什么不同?

Transformer背后的核心概念&#xff1a;注意力机制&#xff1b;编码器-解码器结构&#xff1b;多头注意力等&#xff1b; 例如&#xff1a;The cat sat on the mat&#xff1b; 1、嵌入&#xff1a; 首先&#xff0c;模型将输入序列中的每个单词嵌入到一个高维向量中表示&…

前端面试题34(在移动应用中,通用的实时传输协议)

在移动应用中&#xff0c;选择实时传输协议时通常会考虑几个关键因素&#xff1a;网络效率、功耗、实时性、跨平台兼容性以及数据类型&#xff08;如文本、图像、视频&#xff09;。以下是几种常用的实时传输协议及其在移动应用中的适用性&#xff1a; 1. WebSocket WebSocke…

AI转绘_animatediff-cli-prompt-travel

这个工具有两种主要模式&#xff1a;它可以直接通过提示创建视频&#xff0c;或者它可以对现有视频进行风格化。还有方法可以提高视频的分辨率。 正如工具名称所示&#xff0c;它的一个主要特点是"提示旅行"。这意味着你可以例如使用特定的提示用于前20帧&#xff0…

Github绑定自己的域名

Github绑定自己的域名 1.注册自己的域名2.在GitHUb上创建一个自己的仓库&#xff0c;添加域名2.1 创建仓库2.2 添加域名2.3 在Setting中将域名添加到Custom domain中 3.添加域名解析获取ip地址4.在阿里云修改域名解析记录5.ping 域名即可成功 详细内容可参该博客&#xff1a; …