java @interface 注解详解及实例

发布时间 - 2026-01-11 01:40:37    点击率:

java @interface 注解详解及实例

1 简介

在Java中,定义注解其实和定义接口差多不,只需要在interface前添加一个@符号就可以,即 @interface Zhujie{ },这就表明我们定义了一个名为 @Zhujie 的注解。注解中的每一个方法定义了这个注解类型的一个元素,特别注意:注解中方法的声明中一定不能包含参数,也不能抛出异 常;方法的返回值被限制为简单类型、String、Class、emnus、注释,和这些类型的数组,但方法可以有一个缺省值。

注解相当于一种标记,在程序中加上了注解就等于为程序加上了某种标记,JAVAC编译器、开发工具和其他程序可以用反射机制来了解咱们的类以及各种元素上有无标记,如果找到标记,就做相应的事。例如,@Deprecated可以标记在一些不建议被使用的类、方法和字段上,如果有人使用了,就给出警告。

2 元注解

注解 @Retention 可以用来修饰注解,是注解的注解,称为元注解。Retention注解有一个属性value,是RetentionPolicy类型的,而Enum RetentionPolicy是一个枚举类型,这就决定了Retention注解应该如何去操作,也可以理解为Rentention 搭配 RententionPolicy来使用。RetentionPolicy有3个值,分别为:CLASS 、RUNTIME 和 SOURCE。

  1. 用@Retention(RetentionPolicy.CLASS)修饰的注解,表示注解的信息被保留在class文件(字节码文件)中当程序编译时,但不会被虚拟机读取在运行的时候;
  2. 用@Retention(RetentionPolicy.SOURCE)修饰的注解,表示注解的信息会被编译器抛弃,不会留在class文件中,注解的信息只会留在源文件中;
  3. 用@Retention(RetentionPolicy.RUNTIME)修饰的注解,表示注解的信息被保留在class文件(字节码文件)中,当程序编译时,会被虚拟机保留在运行时。

3 使用示例

首先,创建一个简单的注解:

public @interface Coder { 
   int personId(); 
   String company() default "[unassigned]";
} 

注解定义完之后,咱们就可以用来作注释声明。注解是一种特殊的修饰符,在其他修饰符(例如,public、static 或者 final 等)使用地方都可以使用注解。按照惯例,注解应该放在其他修饰符的前面。注解的声明用@符号后面跟上这个注解类型的名字,再后面加上括号,括号中列出这个注释中元素或者方法的key-value对,其中,值必须是常量。例如:

@coder(personId=20151120,company="YeePay")

没有元素或者方法的注解被称为“标记(marker)”类型,例如:

public @interface Coder {}

标记注解在使用的时候,其后面的括号可以省略。如果注释中仅包含一个元素,这个元素的名字应该为value,例如:

public @interface Coder { 
   String value();
} 

如果元素的名字为value,那么在使用这个注解的时候,元素的名字和等号都可以省略,例如:

@Coder("YeePay")

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# java  # @interface  # 注解详述  # Java注解之Retention、Documented、Inherited介绍  # 小议Java中@param注解与@see注解的作用  # Java使用@Validated注解进行参数验证的方法  # Java中lombok的@Builder注解的解析与简单使用详解  # Java中三种简单注解介绍和代码实例  # java自定义注解接口实现方案  # java8中@Contended注解的使用  # 上了  # 可以用  # 这就  # 修饰符  # 有一个  # 是一个  # 是一种  # 放在  # 只需  # 要在  # 只会  # 希望能  # 被称为  # 分别为  # 可以使用  # 谢谢大家  # 就等于  # 就做  # 创建一个  # 抛出 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 微信公众帐号开发教程之图文消息全攻略  如何快速搭建高效WAP手机网站吸引移动用户?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  浅述节点的创建及常见功能的实现  Python文件流缓冲机制_IO性能解析【教程】  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Swift开发中switch语句值绑定模式  Laravel如何生成URL和重定向?(路由助手函数)  Laravel如何实现用户密码重置功能?(完整流程代码)  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  IOS倒计时设置UIButton标题title的抖动问题  晋江文学城电脑版官网 晋江文学城网页版直接进入  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  LinuxCD持续部署教程_自动发布与回滚机制  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  js实现点击每个li节点,都弹出其文本值及修改  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  JS弹性运动实现方法分析  如何快速使用云服务器搭建个人网站?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel如何配置任务调度?(Cron Job示例)  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何在IIS中配置站点IP、端口及主机头?  网站制作报价单模板图片,小松挖机官方网站报价?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Android okhttputils现在进度显示实例代码  Android使用GridView实现日历的简单功能  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  佛山网站制作系统,佛山企业变更地址网上办理步骤?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  专业商城网站制作公司有哪些,pi商城官网是哪个?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  iOS中将个别页面强制横屏其他页面竖屏  如何实现建站之星域名转发设置?  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  详解vue.js组件化开发实践  新三国志曹操传主线渭水交兵攻略  实例解析Array和String方法  PHP正则匹配日期和时间(时间戳转换)的实例代码  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制