java里的注解_java注释中包含注释的内容-程序员宅基地

技术标签: spring  java  restful  

从JDK5开始,Java增加对元数据的支持,也就是 注解(Annotation) ,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。

注释 ( comment ) 用于注解说明解释程序的文字就是 注释 。

  • 注解入门
  • 内置注解
  • 自定义注解,元注解

注解入门

注解是JAVA5开始引入的新技术。注解其实就是代码里的特殊标记,它用于替代配置文件:传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反射技术去得到类里面的注解,以决定怎么去运行类。

注解的作用:

  • 注解不属于代码,但它可以对程序做出解释
  • 可以被其它程序(如编译器等)读取,有助于其它程序可以进行针对性的优化。

注解的格式:

  • 注解是以“@注释名”在代码中存在的,还可以添加参数值,例如:@SuppressWarning(value=“unchecked”)

注解在哪里使用?

  • 可以附加在package, class, method, field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问
package com.peng.annotation;

public class Test {
    
    // @Override 就是重写的注解,一般idea里黄色的字都是注解
    @Override
    public String toString() {
    
        return super.toString();
    }
}

内置注解

内置注解是系统自带的注解,一般使用较多。

  • @Override:定义在java.lang.Override中,此注释只适用于修辞方法,表示一个方法声明打算重写超类中的另一个方法申明。
  • @Deprecated:定义在java.lang.Deprecated中,此注释可以用于修辞方法,属性,类,表示不鼓励程序员使用这样的元素,通常十一位内它很危险或者存在更好的选择。(Deprecated: adj.弃用的)
  • @SuppressWarnings:定义在java.lang.SuppressWarrings中,用来抑制编译时的警告信息。与前两个注解,该注解必须添加一个参数才可使用,且参数都是内置时已定义好的,如"all",“unchecked”,{“all”,“unchecked”}等

元注解

除了直接使用JDK 定义好的注解,我们还可以自定义注解,在JDK 1.5中提供了4个标准的用来对注解类型进行注解的注解类,我们称之为 meta-annotation(元注解),他们分别是:
  • @Target

    • 用于解释我们的注解将用于什么范围(例如一个方法或一个域),该范围有一个明确的枚举类 ElemenetType
  • @Retention

    • 表示在什么级别保存该注解信息。可选的参数值在枚举类型 RetentionPolicy中。
  • @Documented

    • 表示将此注解包含在javadoc中,它表示此注解会被javadoc提取成文档。
  • @Inherited

    • 允许子类继承父类的注解

自定义注解

使用**@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface**用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。

定义注解格式:
  public @interface 注解名 {定义体}

注解参数的可支持数据类型:

1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
    2.String类型
    3.Class类型
    4.enum类型
    5.Annotation类型
    6.以上所有类型的数组

小技巧:当注解只有一个时,且其值名为value,则value可以省略。

package com.peng.annnotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

// 自定义注解
public class Test {
    
    // 注解可以显示赋值, 如果没有默认值, 就必须给注解复制
    @MyAnnotation(name = "", age = 18, id = 1, schools = {
    })
    // 当注解只有一个时,且其值名为value,则value可以省略
    @MyAnnotation2("")
    public void test(){
    

    }
}

@Target({
    ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnnotation{
    
    // 注解的参数: 参数类型 + 参数名();
    String name() default "";
    int age() default 18;
    int id() default -1; //常用小技巧,设置-1表示这项找不到,表示为空。
    String[] schools() default {
    "浙江工商大学", "浙江大学"};
}

@interface MyAnnotation2{
    
    String value();
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37635157/article/details/120619426

智能推荐

自定义校验注解-程序员宅基地

文章浏览阅读1.5k次。目录问题背景解决方案引入依赖添加自定义注解类接口实现自定义校验器类实现校验工具类问题背景开发过程中,常常需要对某些字段进行校验,每次都去写校验逻辑不仅麻烦,而且不能复用,因此可以使用自定义校验注解进行校验。使用时,只需要在需要添加校验的字段上加上自定义的注解即可。解决方案这里以自定义手机号校验注解为例进行讲解引入依赖 <dependency> <groupId>org.springframework.boot</gr_自定义校验注解

C语言入门 -- 判断回文(2021/2/2)-程序员宅基地

文章浏览阅读720次。判断回文忽略标点空格,判断是否回文回文回文是一个前后拼写相同的字符串。回文的一些例子有:“radar”、“able was i ere i saw elba,”以及,如果忽略空格,“a man a plan a canal panama”。编写一个函数testPalindrome(),如果数组中存储的字符串是回文,则返回1,否则返回0。您应该忽略字符串中字符的大小写、空格和标点符号。用main()函数测试函数。/* Name:programme4.c Author:祁麟 Date:202

OMPL学习--第三篇之源码安装Moveit!和OMPL(Melodic版本)_源码安装moveit,临时扩大内存-程序员宅基地

文章浏览阅读7.2k次,点赞18次,收藏149次。OMPL Moveit! Source install 自定义运动规划算法文章目录1. 引言2. 实现方法2.1 Source install Moveit!2.2 Source install OMPL3.0 测试1. 引言2. 实现方法操作系统:Ubuntu 18.04ROS版本:Melodic2.1 Source install Moveit!卸载moveit!:su..._源码安装moveit,临时扩大内存

怎样和求职者聊天_我如何学会欣赏求职者-程序员宅基地

文章浏览阅读1.3k次。怎样和求职者聊天 被标记为工作漏斗的可能性仍是许多技术领域关注的问题。 这种恐惧通常是不合理的,主要是由于传统的和过时的就业观念扩展到了可能不属于他们的经济体中。 换句话说,不要听父母的职业建议。 在90年代互联网泡沫破灭之初,当我第一次开始招聘软件工程师时,更多高级同事建议我避免浪费时间与求职者交谈。 对于那些需要花费大量时间和金钱来使新员工有效的公司,但后来不久失去他们的公司,那些经常..._怎么跟应聘人员聊天

【数据结构 - 树和二叉树】自学笔记记录(完结)_一颗完全二叉树有5000个结点,其叶结点的个数-程序员宅基地

文章浏览阅读6.6k次,点赞18次,收藏105次。数据结构 树和二叉树超详细笔记 多图预警!!!_一颗完全二叉树有5000个结点,其叶结点的个数

Spark2.0 读写ES数据(scala)——elasticsearch6.5.4_scala es 框架-程序员宅基地

文章浏览阅读715次。@羲凡——只为了更好的活着Spark2.0 读写ES数据(scala)——elasticsearch6.5.4特别强调楼主使用spark2.3.2版本,elasticsearch6.5.4版本1.准备工作在pom.xml文件中要添加<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-hadoop</artifactId> <ve_scala es 框架

随便推点

macOS使用phpize安装扩展时报错_macos使用phpize安装扩展时报错。-程序员宅基地

文章浏览阅读182次。macOS使用phpize安装扩展时报错。$ phpizegrep: /usr/include/php/main/php.h: No such file or directorygrep: /usr/include/php/Zend/zend_modules.h: No such file or directorygrep: /usr/include/php/Zend/zend_extensions.h: No such file or directoryConfiguring for:PHP _macos使用phpize安装扩展时报错。

SSM音乐网站的设计与实现-计算机毕设 附源码97245_数据库设计中歌曲和付费之间的联系名称是什么-程序员宅基地

文章浏览阅读1.3k次,点赞26次,收藏37次。前台注册用户的功能如下:注册登录:用户填写个人信息,并验证手机号码进行账户注册,注册成功后方可登录系统。音乐资讯:用户可以在线进行资讯搜索,音乐资讯信息进行查看等。歌曲信息:用户可以在此模块中查找自己喜欢的歌曲信息。维护个人信息:用户因个人信息的变更可以随时修改自己注册信息。歌曲排行榜:用户可以在线查看歌曲排行榜操作。歌曲下载:用户可以进行歌曲下载操作。音乐论坛:用户可以在线进行音乐论坛交流。_数据库设计中歌曲和付费之间的联系名称是什么

android 刷入 windows,安卓技术宅系列之安卓手机刷Windows98-程序员宅基地

文章浏览阅读5.2k次。现在网上什么最火?除了忙的要死的元芳之外恐怕就要数逆天的技术宅了,各种电子产品刷成安卓的操作系统,不论是正常的手机,还是相机,甚至是计算器遥控器等都逃不过技术宅的魔爪,更有甚者在安卓机器上运行了Windows操作系统,这实让安卓系统火了一把。当然这其中有不少都是PS的结果,但是从理论分析只要硬件达标其实不同的硬件是可以运行各种操作系统的,至少在虚拟机的环境下是可以的。现在就让我们一起来当一回技术宅..._csdn安卓手机刷操作系统

鼠标拖拽盒子跟着鼠标在页面任意位置移动_网页中盒子怎么自由移动-程序员宅基地

文章浏览阅读1k次。鼠标拖拽盒子跟着鼠标在页面任意位置移动_网页中盒子怎么自由移动

网页端接入海康摄像头画面操作指南_如何通过ivms-4200的服务直接在自己的web中播放摄像头视频-程序员宅基地

文章浏览阅读2.6w次,点赞9次,收藏80次。一、摄像头rtsp流画面测试首先根据相关摄像头内附的说明书对摄像头进行安装以及wifi配置或者通过网线直连,配置完成后确保摄像头画面能够在手机APP或者相关应用程序上正常播放。然后进入海康威视官网下载并安装SADP摄像头IP搜索工具。打开SADP(设备网络搜索),即能查看当前局域网下的所有海康摄像头IP地址。下面进行摄像头rtsp流播放测试:1.下载VLC media player,并安装打开。2.打开媒体 --> 网络串流 --> 网络。3.输入海康摄像头的rtsp地址并进_如何通过ivms-4200的服务直接在自己的web中播放摄像头视频

Android中Handler的sendEmptyMessage的理解_sends a message containing only the what value, to-程序员宅基地

文章浏览阅读5.5k次。在写代码的过程中,碰到一行代码不理解,去看了下源码,来记录下。mHandler.sendEmptyMessage(0);sendEmptyMessage这个方法之前没有碰到过,查阅源码后发现: /** * Sends a Message containing only the what value. * * @return Returns true_sends a message containing only the what value, to be delivered after the sp