自定义注解@interface

PWM调节DCDC参数计算原理 SOC芯片的核电压、GPU电压、NPU电压、GPU电压等,都会根据性能和实际应用场景来进行电压和频率的调整。 即动态电压频率调整DVFS(Dynamic Voltage and Frequency scaling),优化性能和功耗。 阅读详情

一、简述

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

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

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

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

Annotation 类型里面的参数该怎么设定:

  1. 只能用 public 或默认(default)这两个修饰访问权限。例如String value();这里把方法设为 defaul 默认类型。
  2. 参数成员只能用【char、byte、short、int、long、float、double、boolean】八种基本数据类型和 String、Enum、Class和annotations等数据类型,以及这一些类型的数组。例如String value();这里的参数成员就为 String。
  3. 如果只有一个参数成员,最好把参数名称设为"value",后加小括号。见下面的例子,FruitName 注解就只有一个参数成员。

二、简单的自定义注解和使用注解实例

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

//水果名称注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitName {
    String value() default "";
}
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

//水果颜色注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitColor {
    //颜色枚举
    public enum Color {
        BULE, RED, GREEN
    }
    //颜色属性
    Color fruitColor() default Color.GREEN;
}
import com.mchopin.annotation.Interface.FruitColor.Color;

public class Apple {
    @FruitName("Apple")
    private String appleName;
    @FruitColor(fruitColor = Color.RED)
    private String appleColor;
    public void setAppleColor(String appleColor) {
        this.appleColor = appleColor;
    }
    public String getAppleColor() {
        return appleColor;
    }
    public void setAppleName(String appleName) {
        this.appleName = appleName;
    }
    public String getAppleName() {
        return appleName;
    }
    public void displayName() {
        System.out.println("水果的名字是:苹果");
    }
}

三、注解元素的默认值

注解元素必须有确定的值,要么在定义注解的默认值中指定,要么在使用注解时指定,非基本类型的注解元素的值不可为 null。因此,使用空字符串或 0 作为默认值是一种常用的做法。这个约束使得处理器很难表现一个元素的存在或缺失的状态,因为每个注解的声明中,所有元素都存在,并且都具有相应的值,为了绕开这个约束,只能定义一些特殊的值,例如空字符串或者负数,一次表示某个元素不存在,在定义注解时,这已经成为一个习惯用法。例如:

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

//水果供应者注解
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitProvider {

    //供应商编号
    public int id() default -1;
    //供应商名称
    public String name() default "";
    // 供应商地址
    public String address() default "";
}

定义了注解,并在需要的时候给相关类,类属性加上注解信息,如果没有相应的注解信息处理流程,注解可以说是没有实用价值。如何让注解真真的发挥作用,主要就在于注解处理方法。

halcon知识:常见三种模板匹配方法总结 halcon的三种模板匹配方法总结,halcon有三种模板匹配方法:即Component-Based、Gray-Value-Based、Shaped_based,分别是基于组件(或成分、元素)的匹配,基于灰度值的匹配和基于形状的匹配,此外还有变形匹配和三维模型匹配也是分属于前面的大类 本文只对形状匹配做简要说明和补充: Shape_Based匹配方法: 上图介绍的是形状匹配做法的一般流程及模板制作的两种方法。 先要补充点知识:形状匹配常见的有四种情况 一般形状匹配模板shape_model、线性变 阅读详情

相关推荐

GD32F103入门实践(一)配置环境,搭建工程模板,烧写程序

写在前面 本系列博客是我初学GD32F103的操作实录,我个人是个小白,在学习过程中真的也遇到了不少坑,因此我希望能记录下来,帮助到同样踩坑的你。 我的芯片是GD32F103ZE,软件是Keil,烧写用的是JLink。 材料准备 首先我在兆易创新官网(兆易创新),下载相关的文件。点击资料下载,在搜索框里输入“GD32F10”可以得到相关的资料,其他芯片类似。比较重要的是GD32F10x AddOn和GD32F10x Firmware Library(固件库),这两个必须下载。 下载Keil MDK5,这

qq_41208487的博客 3万+

注解@interface简介以及使用

注解@interface是一种在Java代码中添加元数据(metadata)的方式,它可以用于提供程序的额外信息,但本身并不会直接影响程序的执行。注解可以应用于类、方法、字段和其他程序元素,用于提供关于这些元素的额外信息。使用注解可以为程序的编写和处理提供更多的灵活性和可读性,它们可以用于自动化生成文档、代码分析、编译时检查、运行时处理等。要定义一个注解,需要使用@interface关键字,并在注解中声明属性。注解的属性可以是基本类型、字符串、枚举、注解类型或它们的数组。可以使用默认值为注解属性提供默认值。

weixin_44727769的博客 7054

iSLIP算法实战:如何用Python模拟交换机优先级匹配(附完整代码)

本文详细介绍了如何使用Python实现iSLIP算法,模拟交换机优先级匹配过程。通过核心的指针滑动逻辑和迭代循环策略,构建了一个完整的iSLIP算法模拟器,并加入可视化模块以直观展示匹配过程。文章还提供了完整的代码框架和性能优化建议,适合网络工程师和Python开发者直接集成到测试环境中。

weixin_29313239的博客 249

【Java基础】注解--@interface使用详解

文章目录1. 引言2. 语法规范2.1 继承的Annotation父接口2.2 @Target中的参数ElementType2.3 @Retention中的参数RetentionPolicy2.4 成员变量3. 获取注解信息3.2 使用场景——框架初始化过程中模拟扫描jar包和文件夹中的所有注解4. 注解的作用4.1 编译检查4.2 在反射中使用 Annotation4.3 根据 Annotation 生成帮助文档参考 1. 引言 注解@interface不是接口是注解类,在jdk1.5之后加入的功能,使用

m0_45406092的博客 3万+

数据分析学习总结笔记02:聚类分析及其R语言实现

** 数据分析学习总结笔记02:聚类分析Cluster Analysis ** 1. 聚类分析概述 1.1 聚类分析的直观理解 在科学研究、社会调查或日常生活中,通过观察个体的特征,将群体中的个体归为不同的族群/簇(Cluster)。 2. 聚类分析的方法 3. 聚类分析的应用 3.1 市场营销——精准营销 在市场营销中,基于消费者的历史交易信息、消费者背景等对消费者进行划分,从而对不同类型的消费...

weixin_41961559的博客 4420

STM32F407+LWIP实战:NETCONN接口TCP服务器避坑指南(附正点原子例程解析)

本文深入解析了基于STM32F407和LWIP协议栈构建高响应TCP服务器的实战要点。针对使用NETCONN接口时常见的连接不稳定、数据延迟及内存泄漏等问题,提供了从NETCONN运行模型、服务器实现、参数优化到内存管理的全方位避坑指南,并结合正点原子例程,给出了具体的调试技巧与解决方案。

weixin_29188043的博客 402

获取类上面的自定义注解失败

意思就是,指定注解的生命周期,默认是RetentionPolicy.Class。CLASS:编译的时候保留,但是vm运行的时候,丢弃。RUNTIME:编译,vm运行的时候,都保留。RetentionPolicy有三个值,SOURCE:编译的时候,就给注解丢弃。

qq_30594137的博客 710

01-SA8155P 冷启动强制进入EDL模式

冷启动EDL模式

静虚待令,有物混成 3086

使用@interface 自定义注解

使用@interface 自定义注解0.1442018.11.21 17:35:48字数 1207阅读 3475转载: 在自定义注解之前首先要知晓一个东西:元注解- 可以理解为最根本的注解,其他的注解是可以用此来衍生的,作用就是负责注解其他注解。 在java 5中有几个元注解  1.@Target 2.@Retention,     3.@Documented,     4.@Inh...

weixin_40705360的博客 207

【推荐100个unity插件】动画重定向,快速在不同角色间共享动画,共用非人形Humanoid(泛型generic)动画——Retarget Pro

Retarget Pro是一款高效的Unity动画重定向工具,可快速在不同角色间共享动画。主要特点包括:1分钟快速设置,支持编辑器和运行时重定向;适用于人形、动物、武器等各类角色;提供基础重定向、IK重定向和FPS专用重定向三种功能模块;通过Rig组件和骨架资产实现骨骼链匹配,支持批量处理。插件包含示例项目和预设资源,操作简便且效果优于Unity原生Humanoid系统,特别适合处理手指等精细动画。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 545

极智嘉嵌入式面试题及参考答案

IIC(Inter-Integrated Circuit)即集成电路总线,是一种由 PHILIPS 公司开发的两线式串行总线,用于连接微控制器及其外围设备。它仅使用两根线,即串行数据线 SDA 和串行时钟线 SCL,就能实现多个设备之间的通信,具有简单、高效、占用资源少等优点,广泛应用于各种嵌入式系统中。

大模型大数据攻城狮的专栏 916

Java-@interface 自定义注解

@interface使用1.@interface自定义注解 <1>@interface自定义注解自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。 <2>在定义注解时,不能继承其他的注解或接口。 <3>使用@interface来声明一个注解, 1>.每一个方法实际上是声明了一个配置参数, 2>.方法的名称就是参数的名称, 3>.返回值类型就是参数的类型,(返回值类型只能是基本类型...

qq:489366879 486

定位分析RCU stall问题

在编译内核时打开或者在启动参数中增加这样统计信息是在采样周期中收集的。其中number行分别是发生stalled的cpu上的硬中断,软中断,和上下文的切换次数cputime行的前三列分别是硬中断,软中断和任务消耗的cpu时间,单位为ms.最后一个数字是统计的周期时间(ms).因为用户态的任务通常不会引起RCU CPU stalls,所以任务通常是内核任务,这也是为什么只统计system cpu的原因.

happyAnger6的专栏 1993

@interface 自定义注解

注解:@interface 自定义注解的语法 自定义注解:   使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能...

hff_123的博客 539

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

@interface 自定义注解的语法

https://www.cnblogs.com/keyi/p/6797282.html

mindcarver 224

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

注解(Annotation)自定义注解入门 @interface

要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法。 元注解:   元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:     1.@Target,     2.@Reten...

gw的博客 464

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java @interface 语法_注解:@interface 自定义注解的语法

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

weixin_35827472的博客 650

java @interface 语法_@interface自定义注解的语法

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

weixin_32637935的博客 495

Java中的自定义注解@interface

Java的注解大家用得都挺多的,现在讲解一下它提供的自定义注解语法。 自定义注解 使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。 @interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是...

Mr.Phoebe的专栏 1777

@interface自定义注解的使用方法

@interface自定义注解的使用方法 什么是@interface自定义注解? @interface自定义注解自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。 使用@interface来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回...

Reborn_Chang的博客 5981

Java如何实现自定义注解@interface

什么是注解? 注解的定义 官网描述如下: Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。 将上面的话再翻译一下,如下: (1)元数据在开发中的作用就是做数据约束和标准...

PureUnicorn的博客 734

java @interface 自定义注解

1. 注解的好处 注解可以替代配置文件完成对某些功能的描述,减少程序配置; 在没有配置文件的情况下,我们去观察代码,并不需要同时打开两个文件来观察这个字段到底对应数据库的哪个列,减少了程序繁琐性,使得代码更加清晰易懂; 目前市面上流行的框架基本上都包含了注解配置,那么针对于开源项目,我们在阅读项目代码时,不懂注解如何实现,真的是举步难坚,所以,学习注解也可以加强我们对开源项目源码

火舞狂沙 5902

自定义注解@interface的用法理解及测试实现

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

qq_45632313的博客 1064

java @interface自定义注解和通过反射获取注解属性值

@interface @interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。 方法的名称就是参数的名称,返回值类型就是参数的类型 参数类型只能是基本类型、Class、String、enum。 可以通过default来声明参数的默认值。 Java注解就是一种特殊的接口,使用@interface自定义注解时,自动继承了java.lang.annotation.An...

佳艺 5795

@interface自定义注解 java

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

guangzhou007_java的博客 257
上一篇: Spring 注入 bean 的 set 方法不能是 static 的
下一篇: 优雅的全局异常处理
JFS_Study
博客等级 码龄6年 363粉丝 359原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFS_Study

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值