首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 注解

Java 注解

原创
作者头像
沪上队长
修改于 2018-05-03 09:44:43
修改于 2018-05-03 09:44:43
2.8K0
举报
文章被收录于专栏:物联网事物联网事

常见的注解

以下注解都是 Annotation 接口的实现

标注

说明

@Deprecated

所标注内容,不再被建议使用。

@Override

只能标注方法,表示该方法覆盖父类中的方法。可以检查方法是否写错

@Documented

所标注内容,可以出现在javadoc中。

@Inherited

只能被用来标注“Annotation类型”,它所标注的Annotation具有继承性。

@Retention

只能被用来标注“Annotation类型”,用来指定Annotation的RetentionPolicy属性。

@Target

只能被用来标注“Annotation类型”,用来指定Annotation的ElementType属性。

@SuppressWarnings

@SuppressWarnings 所标注内容产生的警告,编译器会对这些警告忽略。

什么是注解

  • 本质:注解名称对应一个注解类
  • 语法:@注解名称(属性:属性值)
  • 作用:校验、替代一些配置文件信息
  • 解析:注解是由相关的框架来解析的,我们只使用即可

定义注解类

  • 所有的注解都是Annotation 接口的实现类或之类
  • java.lang.annotation # Annotation
  • 语法:@interface 注解名
代码语言:txt
AI代码解释
复制
@interface MyAnno1 {

}

注解可以作用的目标

  • 类、接口、枚举
  • 构造方法
  • 成员变量
  • 局部变量
  • 方法
  • 形参
代码语言:txt
AI代码解释
复制
// 作用在包上,先不讲
package com.rlk.anotation;

@MyAnno1 //作用在类上
public class Demo1 {
	@MyAnno1 //作用在:成员变量
	private String name;
	
	@MyAnno1 //作用在:构造方法
	public Demo1() {
	}
	
	@MyAnno1 //作用在:方法
	public void fun1() {
	}
	
	public void fun2(@MyAnno1 String name) { //作用在:形参
		
		@MyAnno1 // //作用在:局部变量上
		String username = "hello";

		// 错误:不能作用在方法或者属性的调用上
		Demo1 demo1 = new Demo1();
		
		@MyAnno1  // 错误
		demo1.属性;
		
		@MyAnno1  // 错误
		demo1.方法
	}
}

注解的属性

在使用注解的时候,可以给你指定属性值。

要指定什么样的值,以及如何如指定,必须看这个属性在定义注解的时候怎么去定义的。

  • 语法: 属性类型 属性名()
代码语言:txt
AI代码解释
复制
@interface MyAnno1 {
    int age();   //age属性
    String name();  //name属性
}
  • 注解属性的类型:
    • 8中基本类型
    • String
    • Emum
    • Class
    • 注解类型
    • 以上类型的一维数组类型
代码语言:txt
AI代码解释
复制
@interface MyAnno1 {
    int a();
    String b();
    MyEnum1 c();
    Class d();
    MyAnno2 e();
    int[] f();
}

定义并使用注解的属性

  • 在使用注解的时候,对其定义的属性进行赋值@MyAnno1(age=100, name="zhangSan") //给注解的属性进行赋值 public class Demo1 { ... }
  • 定义属性的默认值
    • 在定义属性的时候,可以对其设置默认值。在使用注解的时候,可以不给该属性指定值,也可以重新指定,覆盖默认值。
代码语言:txt
AI代码解释
复制
@interface MyAnno2 {
    int age() default 100;  // 注解属性的默认值
    String name();
}
代码语言:txt
AI代码解释
复制
@MyAnno2(name="liSi")  // 使用注解、属性
public class Demo2 {
    ...
}
  • values 属性特权@interface MyAnno3 { int value(); }
  • 当属性名称为 value 的时候,在使用的时候赋值,直接写值即可。
代码语言:txt
AI代码解释
复制
@MyAnno3(100)
public class Demo2 {

}

注解的作用目标权限 @Target

  • 含义:对注解的使用的目标进行了限制,只能在 某个或某些 作用目标上@Target(value={ElementType.TYPE, ElementType.METHOD, ElementType.FIELD}) @interface MyAnno1 { ... }
  • 表示:@Target
  • 对应关系:Annotaion : ElementType = 1 : n
  • 在定义注解的时候,给定义的注解添加注解,即 @Target,用来表明该注解可以用在一个过几个地方,有所限制
  • 例如,下面的注解 @MyAnno1 注解由 @Target 指定,只能作用在类、方法、属性上

java.lang.Override.java

代码语言:txt
AI代码解释
复制
// 这个@Target添加在Override的注解定义上,那么Target的属性值是什么呢,去定义的地方看看
@Target(ElementType.METHOD)  
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

java.lang.annotation.Target.java

代码语言:txt
AI代码解释
复制
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
    ElementType[] value();  // Target注解的属性类型:为枚举类型数组
}

java.lang.annotation.ElementType

代码语言:txt
AI代码解释
复制
public enum ElementType {
    TYPE,  /** Class, interface (including annotation type), or enum declaration */
    FIELD,  /** Field declaration (includes enum constants) */
    METHOD,  /** Method declaration */
    PARAMETER,  /** Formal parameter declaration */
    CONSTRUCTOR,  /** Constructor declaration */
    LOCAL_VARIABLE,  /** Local variable declaration */	
    ANNOTATION_TYPE,  /** Annotation type declaration */	
    PACKAGE,  /** Package declaration */
    TYPE_PARAMETER,  /** Type parameter declaration */
    TYPE_USE  /** Use of a type */
}

注解的保留策略限定 @Retention

  • 含义:注解在源码、字节码、JVM中,是否可以保留@Retention(RetentionPolicy.RUNTIME) @interface MyAnno1 { ... }

java.lang.annotation.Retention.java

代码语言:txt
AI代码解释
复制
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION\_TYPE)
public @interface Retention {  // 定义@Retention注解
    RetentionPolicy value(); // 属性 enum RetentionPolicy 类型
}
  • 表示:@Retention ,保留
  • 对应关系:Annotaion : RetentionPolicy = 1 : 1
  • 分类:(指定哪种类型,即在哪种情况下及其之前的动作才存在注解)
    • 源代码文件(SOURCE):注解只在源代码中存在,当编译时就被忽略了
    • 字节码文件(CLASS)默认:注解在源代码中存在,然后编译时会把注解信息放到了class文件,但JVM在加载类时,会忽略注解!
    • JVM中(RUNTIME):注解在源代码、字节码文件中存在,并且在JVM加载类时,会把注解加载到JVM内存中(它是唯一可反射注解! 关键关键关键!!!)
  • 例如: 该注解在源码、字节码、JVM中都存在

java.lang.annotation.RetentionPolicy.java

代码语言:txt
AI代码解释
复制
public enum RetentionPolicy {
    SOURCE,
    CLASS,
    RUNTIME
}

总结

  • 因此在好多注解定义的时候,都会给注解加上以上两个注解,至关重要@Target(ElementType.METHOD) // 注解的作用目标权限 @Retention(RetentionPolicy.SOURCE) // 注解的保留策略限定
  • 关于注解的反射另外介绍

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
深入了解平均精度(mAP):通过精确率-召回率曲线评估目标检测性能
平均精度(Average Precision,mAP)是一种常用的用于评估目标检测模型性能的指标。在目标检测任务中,模型需要识别图像中的不同目标,并返回它们的边界框(bounding box)和类别。mAP用于综合考虑模型在不同类别上的准确度和召回率。
deephub
2023/08/28
2.8K0
深入了解平均精度(mAP):通过精确率-召回率曲线评估目标检测性能
目标检测中的平均精度(mAP)详解--建议收藏+掌握
本文将详细介绍目标检测中的平均精度(mAP),建议收藏并掌握。(公众号:OpenCV与AI深度学习)
Color Space
2022/09/26
10K0
目标检测中常提到的IoU和mAP究竟是什么?
intersect over union,中文:交并比。指目标预测框和真实框的交集和并集的比例。
AI粉嫩特工队
2019/09/26
3.4K0
目标检测中常提到的IoU和mAP究竟是什么?
利用mAP评估目标检测模型
在本文中,我们将了解如何使用 precision 和召回率来计算平均精度 (mAP)。mAP 将真实边界框与检测到的框进行比较并返回分数。分数越高,模型的检测越准确。
数据科学工厂
2023/01/19
8820
【必备】目标检测中的评价指标有哪些?
上期我们一起学习了全卷积神经网络FCN,今天我们看下目标检测中的评价指标都有哪些?
智能算法
2020/05/08
17.8K0
什么是MAP? 理解目标检测模型中的性能评估
【导读】近日,机器学习工程师Tarang Shah发布一篇文章,探讨了机器学习中模型的度量指标的相关问题。本文首先介绍了机器学习中两个比较直观和常用的度量指标:精确度和召回率,然后详细讲解了目标检测领
WZEARW
2018/04/13
3.2K0
什么是MAP? 理解目标检测模型中的性能评估
目标检测任务中的一些评估准则
本篇文章介绍一下目标检测中常用的一些评估准则,大家跑 yolo 的时候可能看着一堆输出不知道啥意思,希望这篇文章能够解决大家的疑惑,主要是翻译 GitHub 上的一个 repo,原文是英文写的,链接在这里,写的挺不错,就翻译过来给英文不好的同学看看,另外还加了几个项目中没有提到的准则
棒棒鸡不棒
2022/09/02
9870
目标检测任务中的一些评估准则
目标检测4: Detection基础之mAP
前面目标检测1: 目标检测20年综述之(一)和目标检测2: 目标检测20年综述之(二)让大家对目标检测有个大概的认识,机器学习评价指标合辑(Precision/Recall/F1score/P-R曲线/ROC曲线/AUC)介绍了基础的评价指标,如Precision、Recall、F score等概念,目标检测3: Detection基础之IoU中介绍了目标检测的评价指标IoU,接下来我们介绍目标检测最重要的评价指标mAP。
枫桦
2022/08/02
1K0
目标检测4: Detection基础之mAP
目标检测的中的指标的含义及其实现
IoU测量两个区域之间的重叠程度,在目标检测中衡量预测结果和标签(真实的目标边界)之间的重叠程度。
狼啸风云
2023/10/07
8030
目标检测的中的指标的含义及其实现
目标检测mAP计算方式
目标检测中常见的mAP计算说起来比较麻烦,所以结合VOC的计算代码进行一次详细的解析。
泽霖
2023/11/26
5940
什么是mAP ? 比较目标检测模型性能的统计量,了解一下?
翻译 | 张建军 出品 | 人工智能头条(公众号ID:AI_Thinker) 在机器学习领域,对于大多数常见问题,通常会有多个模型可供选择。当然,每个模型会有自己的特性,并会受到不同因素的影响而表现不同。 每个模型的好坏是通过评价它在某个数据集上的性能来判断的,这个数据集通常被叫做“验证/测试”数据集。这个性能由不同的统计量来度量,包括准确率( accuracy )、精确率( precision )、召回率( recall )等等。选择我们会根据某个特定的应用场景来选择相应的统计量。而对每个应用来说,找到
用户1737318
2018/06/05
1K0
X射线图像中的目标检测
每天有数百万人乘坐地铁、民航飞机等公共交通工具,因此行李的安全检测将保护公共场所免受恐怖主义等影响,在安全防范中扮演着重要角色。但随着城市人口的增长,使用公共交通工具的人数逐渐增多,在获得便利的同时带来很大的不安全性,因此设计一种可以帮助加快安全检查过程并提高其效率的系统非常重要。卷积神经网络等深度学习算法不断发展,也在各种不同领域(例如机器翻译和图像处理)发挥了很大作用,而目标检测作为一项基本的计算机视觉问题,能为图像和视频理解提供有价值的信息,并与图像分类、机器人技术、人脸识别和自动驾驶等相关。在本项目中,我们将一起探索几个基于深度学习的目标检测模型,以对X射线图像中的违禁物体进行定位和分类为基础,并比较这几个模型在不同指标上的表现。
小白学视觉
2022/02/11
1.8K0
X射线图像中的目标检测
绝对不容错过:最完整的检测模型评估指标mAP计算指南(附代码)在这里!
作者: 叶 虎 编辑: 赵一帆 前 言 本文翻译自Measuring Object Detection models - mAP - What is Mean Average Pr
机器学习算法工程师
2018/07/27
4.3K0
绝对不容错过:最完整的检测模型评估指标mAP计算指南(附代码)在这里!
ADA-YOLO | YOLOv8+注意力+Adaptive Head,相对YOLOv8,mAP提升3%+118FPS
近年来,目标检测技术取得了显著的进展,使得可以实现对解剖结构、病变或异常的自动识别和定位。多年来,目标检测方法取得了重大的进步,这是由于大规模的带有标注的数据集的出现和深度学习技术的开发所驱动的。这些技术在改善医疗诊断和治疗结果方面展示出巨大的潜力。
集智书童公众号
2024/01/17
1.3K0
ADA-YOLO | YOLOv8+注意力+Adaptive Head,相对YOLOv8,mAP提升3%+118FPS
YOLO 目标检测实战项目『原理篇』
在目标检测中,IoU 为预测框 (Prediction) 和真实框 (Ground truth) 的交并比。如下图所示,在关于小猫的目标检测中,紫线边框为预测框 (Prediction),红线边框为真实框 (Ground truth)。
机器视觉CV
2019/11/14
5.1K1
YOLO 目标检测实战项目『原理篇』
【小知识】目标检测各类指标概念总结
目标检测论文中出现过很多容易混淆的评价指标,比如FLOPS、FLOPs、 GFLOPS,包括最基本的AP、mAP这些定义,索性将这些基本概念搞清楚,做个总结。
机器学习AI算法工程
2024/07/04
5110
【小知识】目标检测各类指标概念总结
目标检测模型的评价标准-AP与mAP
为了了解模型的泛化能力,即判断模型的好坏,我们需要用某个指标来衡量,有了评价指标,就可以对比不同模型的优劣,并通过这个指标来进一步调参优化模型。对于分类和回归两类监督模型,分别有各自的评判标准。
h3110_w0r1d
2025/02/04
2940
从 YOLOv1 到 YOLOv2:目标检测的进化之路
你有没有想过,当你用手机拍一张照片,里面的人、车、狗是怎么被自动识别出来的?这背后靠的就是目标检测技术。目标检测是计算机视觉中的一个重要领域,它不仅要回答“图片里有什么”,还要告诉你“这些东西在哪里”。今天,我们要聊的是目标检测领域的两个经典模型:YOLOv1 和 YOLOv2。它们的名字听起来很酷——“You Only Look Once”(你只看一次),不仅名字帅,性能也很强。这篇博客将带你走进 YOLO 的世界,聊聊它们的原理、区别,以及那些听起来高大上的概念,比如 mAP、FPS、IoU 等。我们会尽量用大白话解释,并在后面深入讲解数学公式和代码实现,让你轻松看懂!
机器学习司猫白
2025/03/15
1290
从 YOLOv1 到 YOLOv2:目标检测的进化之路
睿智的目标检测20——利用mAP计算目标检测精确度「建议收藏」
这个是用来绘制mAP曲线的。 https://github.com/Cartucho/mAP 这个是用来获取绘制mAP曲线所需的txt的 https://github.com/bubbliiiing/count-mAP-txt
全栈程序员站长
2022/11/19
5170
睿智的目标检测20——利用mAP计算目标检测精确度「建议收藏」
机器学习中的评价指标
在人工智能领域,机器学习的效果需要用各种指标来评价。本文将阐述机器学习中的常用性能评价指标,矢量卷积与神经网格的评价指标不包括在内。
Datawhale
2019/10/12
7590
机器学习中的评价指标
推荐阅读
相关推荐
深入了解平均精度(mAP):通过精确率-召回率曲线评估目标检测性能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档