注解复习(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;

    @Deprecated
    public void doSoms() {

    }
}

在这里插入图片描述



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

public class Test extends myclass{
    @Override
    void 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.mfbz.cn/a/787399.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙语言基础类库:【@ohos.util.Deque (线性容器Deque)】

线性容器Deque 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 Deque(double ended queue)根据循环队列的数据结构实现,符合先进先出以及先进后出的特点&…

【Stable Diffusion】(基础篇三)—— 关键词和参数设置

提示词和文生图参数设置 本系列笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会Stable Diffusion,这绝对是你看过的最容易上手的AI绘画教程 | SD WebUI 保姆级攻略_哔哩哔哩_bilibili 本文主要讲…

深入理解 LXC (Linux Containers)

目录 引言LXC 的定义LXC 的架构LXC 的工作原理LXC 的应用场景LXC 在 CentOS 上的常见命令实验场景模拟总结 1. 引言 在现代 IT 基础设施中,容器技术已经成为一种重要的应用和部署方式。与虚拟机相比,容器具有更高的效率、更轻量的特性和更快的启动速度…

解答 | http和https的区别,谁更好用

TTP(超文本传输协议)和HTTPS(安全超文本传输协议)的主要区别在于安全性和数据传输的方式。 一、区别 1、协议安全性: HTTP:使用明文形式传输数据,不提供数据加密功能,数据在传输过…

用于视频生成的扩散模型

学习自https://lilianweng.github.io/posts/2024-04-12-diffusion-video/ 文章目录 3D UNet和DiTVDMImagen VideoSora 调整图像模型生成视频Make-A-Video(对视频数据微调)Tune-A-VideoGen-1视频 LDMSVD稳定视频扩散 免训练Text2Video-ZeroControlVideo 参…

利用 STM32 实现多协议物联网网关:Modbus/Zigbee 到以太网/Wi-Fi 的数据桥接

摘要: 随着物联网技术的飞速发展,不同通信协议之间的互联互通成为了构建智能化系统的一大挑战。本文将以实战项目为例,详细介绍如何利用 STM32 微控制器实现 Modbus/Zigbee 与以太网/Wi-Fi 之间的协议转换,从而打通传感器数据上传至服务器的“…

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

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

海南云亿商务咨询有限公司助力品牌快速崛起

在数字化浪潮的推动下,电商行业日新月异,短视频平台更是成为品牌宣传和销售的新宠。海南云亿商务咨询有限公司,作为抖音电商服务的领军者,凭借其专业的团队和丰富的经验,助力众多品牌在抖音平台上实现了快速增长。 一…

【INTEL(ALTERA)】为什么我使用 PIO 边缘捕获中断的 Nios® II 设计不能正常工作?

目录 说明 解决方法 说明 当用户选择了不正确的边缘捕获设置,从而阻止触发中断时,可能会出现此问题。 在 PIO(并行 I/O)英特尔 FPGA IP内核中,如果“启用单个位设置/清除”选项被关闭,则将任何值写入边…

【RIP实验-熟悉基础配置】

实验拓扑 实验要求 根据实验拓扑的IP地址分配,为所有设备配置对应的IP地址和环回地址。全网运行RIPv2,将R1、R2、R3和R4的物理端口、Loopback地址和10.1.00网段进行宣告。并在rip协议下配置路由自动汇总,观察R1/R2是否能够收到10.0.0.0的详细…

初识数组(二)

目录 1. 二维数组的初始化 1) 不完全初始化 2) 完全初始化 3) 按照行初始化 4) 初始化时省略行,但是不能省略列 2.二维数组的使用 1) 二维数组的下标 2)二维数组的输入和输出 3. 二维数…

学生管理系统 | python

1. 题目描述 ****************************** 欢迎使用学生管理系统 ****************************** 1. 添加学生 2. 查看学生列表 3. 查看学生信息 4. 删除学生 5. 退出系统 1 请输入学生姓名: zhangsan 请输入学生学号: 10010 请输入学生班级: 3 请输入学生成…

044基于SSM+Jsp的个性化影片推荐系统

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

如何在JetBrains中写Codeforce?

目录 前言 正文 leetcode 个人喜好 参考资料 具体操作步骤 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in University of Nottingham Ningbo China&#x1f4…

2024第六届上海国际新材料展览会-12月精彩呈现

2024第六届上海国际新材料展览会 The 6th shanghai International New Materials Exhibition in 2024 时 间:2024年12月18-20日 地 点:上海新国际博览中心 CIME 2024专业、权威,涵盖整个新材料行业的国际盛会。 期待与您在CIME 2024现场相…

linux中top、htop监控工具命令详解

文章目录 top 命令概述如何使用 top 命令top 命令输出解释各部分解释系统信息任务信息CPU 使用信息内存使用信息进程信息 top 命令的常用交互操作top 命令的常用选项查看每个CPU使用情况示例说明默认视图按下 1 键后的视图 如何使用 htop和top之间比较用户界面和可用性功能和特…

大话光学原理:2.最短时间原理、“魔法石”与彩虹

一、最短时间原理 1662年左右,费马在一张信纸的边角,用他那著名的潦草笔迹,随意地写下了一行字:“光在两点间选择的路,总是耗时最少的。”这句话,简单而深邃,像是一颗悄然种下的种子&#xff0c…

自动化测试之unittest框架详解

1、什么是Unittest框架? python自带一种单元测试框架 2、为什么使用UnitTest框架? >批量执行用例 >提供丰富的断言知识 >可以生成报告 3、核心要素 1).TestCase(测试用例) 2).TestSuite(测试套件) 3).Test…

关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法

在使用Qt模型视图框架的时候,你可能会遇见这种情况:给QTableView设置设置模型的时候,网模型里面插入数据,因为数据是一行一行插入的,即要使用model的appandRow函数,但有时候最后一行数据没有填满一行&#…

汇川CodeSysPLC教程03-2-14 与HMI通信

硬件连接 PLC与HMI连接采用何种连接方式,通常是参考双方支持哪些接口。PLC(可编程逻辑控制器)与HMI(人机界面)之间的通讯方式主要有以下几种: 串行通讯(Serial Communication)&…