注解复习(java)

news2024/11/20 20:19:50

文章目录

    • 注解
      • 内置注解
        • **@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.coloradmin.cn/o/1912156.html

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

相关文章

LabVIEW中使用 DAQmx Connect Terminals作用意义

该图展示了如何在LabVIEW中使用 DAQmx Connect Terminals.vi 将一个信号从一个源端口连接到一个目标端口。这种处理有以下几个主要目的和作用: 同步操作: 在多任务、多通道或多设备系统中,可能需要不同的组件在同一时刻执行某些操作。通过将触…

深入理解循环神经网络(RNN)

深入理解循环神经网络(RNN) 循环神经网络(Recurrent Neural Network, RNN)是一类专门处理序列数据的神经网络,广泛应用于自然语言处理、时间序列预测、语音识别等领域。本文将详细解释RNN的基本结构、工作原理以及其优…

【鸿蒙学习笔记】创建自定义组件

官方文档:创建自定义组件 目录标题 [Q&A] 如何自定义组件?1・struct 自定义组件名 {...}2・build()函数:3・@Component4・Entry5・Reusable 自定义组件的参数 buil…

一篇经典Python编程常用的30个操作以及代码演示

这些案例将涵盖数据处理、算法、文件操作、数据可视化、网络编程、机器学习等多个领域. 以下是具体的操作步骤和示例代码: 基础操作 1. 计算两个数的和 def add(a, b): return a b print(add(3, 5)) 2. 判断一个数是否为偶数 def is_even(n): return n % …

谷歌+火狐浏览器——实现生成二维码并实现拖动——js技能提升

最新遇到的问题:前两个二维码拖动不了,只有第三个一维码生成后,才可以拖拽 【问题】:出现在都是绝对定位,但是没有指定z-index导致的。 解决办法:在方法中添加一个变量 renderDrag(id) {var isDragging f…

RDNet实战:使用RDNet实现图像分类任务(一)

论文提出的模型主要基于对传统DenseNet架构的改进和复兴,通过一系列创新设计,旨在提升模型性能并优化其计算效率,提出了RDNet模型。该模型的主要特点和改进点: 1. 强调并优化连接操作(Concatenation) 论文…

Java反射与Fastjson的危险反序列化

什么是Java反射? 在前文中,我们有一行代码 Computer macBookPro JSON.parseObject(preReceive,Computer.class); 这行代码是什么意思呢?看起来好像就是我们声明了一个名为 macBookPro 的 Computer 类,它由 fastjson 的 parseObje…

【解决ERROR】usage:conda [-h][-V] command... conda:error:unrecognized arguments

解决方法 conda env create --file conda3_520_env_deepPath.yml

拖地机检测液位的原理-管道液位传感器

在现代洗地机中,确保水箱液位充足是保证清洁效率和质量的关键之一。为了实现这一功能,洗地机通常配备了管道光电液位传感器,这种传感器利用先进的光学感应原理来准确检测水箱中的液位情况。 管道光电液位传感器的工作原理基于光学传感技术&a…

新手教学系列——crontab 使用不当引发的服务器性能问题

起因及症状 最近,我们的一台服务器随着运行时间的增加,逐渐出现了压力过大的问题。具体表现为数据库连接数飙升至 4000+,Redis 频繁超时,系统报错文件打开数过多等。针对这些问题,我们逐一检查了数据库连接池、Redis 连接池以及系统的 ulimit 配置,但都未能找到问题的根…

k8s中port,targetPort,nodePort,containerPort的区别

一、说明 在 Kubernetes 中,port、targetPort、nodePort 和 containerPort 是用于定义服务(Service)和容器之间网络通信的不同参数。 它们各自的作用和含义如下: 1. port 定义:这是服务对外暴露的端口号。作用&#x…

eBPF实战教程五|如何使用USDT探针定位MySQL异常访问(含源码)

前言 各位小伙伴们,非常感谢你们对我们eBPF专题系列文章的持续关注和热情支持!在之前的文章中,我们深入探讨了如何手写一个uprobe探测用户态程序。许多热心的小伙伴给我们发私信表达了他们对eBPF技术在数据库领域应用的浓厚兴趣,…

2024建博会|博联AI大模型全屋智能引领智能体验新纪元

7月8日,2024中国建博会(广州)在广交会展馆及保利世贸博览馆盛大启幕。BroadLink博联智能携AI大模型全屋智能以及AI商业照明解决方案惊喜亮相,全方位展示AI大模型在智能家居领域的前沿应用成果。 本次建博会,博联智能带…

《大语言模型的临床和外科应用:系统综述》

这篇题为《大语言模型的临床和外科应用:系统综述》的文章对大语言模型(LLM)目前在临床和外科环境中的应用情况进行了全面评估。 大语言模型(LLM)是一种先进的人工智能系统,可以理解和生成类似人类的文本。…

如何在不关闭防火墙的情况下,让两台设备ping通

问题现象 如题,做虚拟机实验的时候,有一台linux系统的虚拟机配置的ip地址是192.168.172.181 物理主机的ip地址是192.168.172.1 此时物理主机可以ping通虚拟机 但是虚拟机不能ping通物理主机 此时我们可以想到,有可能是物理主机防火墙的原因。…

S32V234平台开发(一)快速使用

快速使用 准备供电复位选择串口通信启动选择显示登陆系统 准备供电 s32v234可以使用两种电源供电 一种是左边电源端子,一种是右边电源适配器(12V 3A) 注意:不要同时使用两种电源同时供电 复位选择 Pressing POR RESET pulls active low EXT_POR signal on S32V2…

基于蓝牙iBeacon定位技术的商场3D楼层导视软件功能详解与实施效益

在现代商场的繁华与复杂中,寻找目的地往往令人头疼。维小帮3D楼层导视软件以其创新技术,为顾客带来无缝、直观的跨楼层导航体验,让每一次商场消费都成为享受。 商场3D楼层导视软件功能服务 3D多楼层导视地图,商场布局一览无遗 …

卷技术还是卷应用?李彦宏给出了明确答案

如何理解李彦宏说的“不要卷模型,要卷应用” 引言 7月4日,2024世界人工智能大会在上海世博中心召开。百度创始人兼CEO李彦宏在产业发展主论坛上呼吁:“大家不要卷模型,要卷应用!”这句话引起了广泛讨论。李彦宏认为&a…

安装nodejs | npm报错

nodejs安装步骤: 官网:https://nodejs.org/en/ 在官网下载nodejs: 双击下载下来的msi安装包,一直点next,我选的安装目录是默认的: 测试是否安装成功: 输入cmd打开命令提示符,输入node -v可以看到版本,说…

ByteMD富文本编辑器的vue3配置

Git地址:GitHub - bytedance/bytemd: ByteMD v1 repository 控制面板输入 npm install bytemd/vue-next 下载成功后在src/main.ts中引用 import "bytemd/dist/index.css";引入后保存,下面是一些插件,比如说我用到gmf和hightLight&…