Java Annotation学习笔记

Zabbix-01简单导入MIB文件并测试 这里写自定义目录标题安装 MIB文件启用MIB文件测试MIB文件 MIB文件 MIB代表管理信息库。 MIB文件允许您使用OID(对象标识符)的文本表示。 ##例如: ifHCOutOctets 是OID【1.3.6.1.2.1.31.1.1.1.10】的文本表示 安装 MIB文件 在基于Debian的系统上: # apt install snmp-mibs-downloader # download-mibs 在基于RedHat的系统上: # yum install net-snmp-libs 启用M 阅读详情

Java Annotation学习笔记

该学习笔记是基于Thinking in Java 4th Edition整理的。

一. 什么是Annotation

Annotation是Java 1.5以后所具有的新的特性。Annotation提供了一种格式化的标注代码的途径,它为包,接口,类,或者方法提供的额外的信息。所有Annotation也被称作为metadata。


二. 为什么使用Annotation

Annotation可以方便地将针对代码的信息加入源代码中。在大大降低程序配置文件复杂程度的同时,也为程序员提供了方便直观的阅读方式。随主Java 1.5的这个新特性的到来,Spring,Hibernate,Junit等等都提供基于Annotation的配置方式。


三. Annotation怎么工作

如果简单的将Annotation添加到源代码中,那么Annotation是不可以工作的。所以必须创建Annotation processor class来解析Annotation。Annotation processor的基础是Java的反射机制,它通过在runtime的动态读取Annotation来决定程序的运行状态。


四. Annotation的构造

4.1 @Override标注

Java 1.5提供了一些基本的Annotation,比如@Override,如下是@Override的源码。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
通过@Override标注可以看出,Annotation类似于一个interface的构造,只不过在interface的前面添加了@。

Java 1.5提供了四个基本的Annotation,用于构造其余新的Annotation。

4.2 四个基本标注

四个基本标注分别是@Target, @Retention, @Documented和@Inherited。
@Target:用于声明自定义的Annotation所能标注的目标。该Annotation可取值为一个命为ElementType的枚举,该枚举包括以下值:
CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE。
@Retention:用于声明自定义的Annotation所添加的信息可以保持到什么阶段。该Annotation可取值为一个命为RetentionPolicy的枚举,该枚举包括以下值:
SOURCE, CLASS, RUNTIME。
@Documented:用于声明自定义的Annotation是否被添加到Javadoc中。列子之一就@Deprected标注。
@Inherited:用于声明自定义的Annotation是否可以被子类从父类中继承。(注意注解继承只针对class 级别注解有效)

五. 一个完整的Annotation实例(来源于Thinking in Java,Page 762)

该实例主要通过创建一个@UseCase并将其标注于方法上来达到获取项目进度的目的。

@UseCase的创建:

import java.lang.annotation.*;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase {
public int id();
public String description() default "no description";
}

利用@UseCase来标注PasswordUtils.class

import java.util.*;
public class PasswordUtils {
@UseCase(id = 47, description =
"Passwords must contain at least one numeric")
public boolean validatePassword(String password) {
return (password.matches("\\w*\\d\\w*"));
}
@UseCase(id = 48)
public String encryptPassword(String password) {
return new StringBuilder(password).reverse().toString();
}
@UseCase(id = 49, description =
"New passwords can’t equal previously used ones")
public boolean checkForNewPassword(
List<String> prevPasswords, String password) {
return !prevPasswords.contains(password);
}
}

创建UseCaseTracker.class,用来解析被标注的PasswordUtils.class

import java.lang.reflect.*;
import java.util.*;
public class UseCaseTracker {
public static void
trackUseCases(List<Integer> useCases, Class<?> cl) {
for(Method m : cl.getDeclaredMethods()) {
UseCase uc = m.getAnnotation(UseCase.class);
if(uc != null) {
System.out.println("Found Use Case:" + uc.id() +
" " + uc.description());
useCases.remove(new Integer(uc.id()));
}
}
for(int i : useCases) {
System.out.println("Warning: Missing use case-" + i);
}
}
public static void main(String[] args) {
List<Integer> useCases = new ArrayList<Integer>();
Collections.addAll(useCases, 47, 48, 49, 50);
trackUseCases(useCases, PasswordUtils.class);
}
}

输出:

Found Use Case:47 Passwords must contain at least one numeric
Found Use Case:48 no description
Found Use Case:49 New passwords can’t equal previously used ones
Warning: Missing use case-50

简单的Annotation学习笔记完毕。对于Annotation的理解有助于对Spring,Hibernate等基于标注的配置方式的理解。
后期还要记得补充利用apt工具来解析Annotation。



Unity零基础到进阶 | Unity Shader 深度硬核解析 Unity Shader 是运行在GPU上的可编程渲染程序,是整个引擎渲染体系的算法核心。它通过 Unity 封装的 ShaderLab 语法 + GPU 原生 HLSL 语言编写,定义了「网格数据如何经过光照计算、纹理采样、几何变换、混合测试,最终转化为屏幕像素颜色」的完整规则。 通俗来说:Shader 决定物体「怎么画」,材质(Material)只是 Shader 的参数实例,决定「用什么画」。没有 Shader,材质就是无渲染能力的空壳;没有材质,Shader 无法落地到具体物体。 阅读详情

相关推荐

在ros里给机械臂加上夹爪和底盘后,控制真实机械臂

使用ur3_bringup 可以连接真实机械臂 使用官方的ur3_moveit_planning_execution.launch 可以对机械臂 moveit规划。 但是只有机械臂,没有夹爪。 官方如图: 我把原来的ur3_moveit_config 复制出来,修改 然后把ur3.xacro 等模型文件复制出来修改,修改完之后,有了夹爪,有了底盘。 规划组什么的使用moveit setup assistant 配置过了。 在rviz中可以笛卡尔空间规划了。 ...

超级菜 2716

Java学习笔记5——Annotation

Java学习笔记——Annotation Annotation就是注释的意思,tiger用它来加强Java源文件本身的表达能力,在EJB3.0中作用非常大。 Annotation有三类,一类是标准的Annotation,而且号称“即拆即用”(out of the box),也就是直接可以用,是包含在java.lang中的系统自带的。第二类是自己定义的annotation,第三类则是meta ann

王程斯的专栏 1794

Conda环境创建报错?教你快速解决Solving environment: failed和ResolvePackageNotFound问题

本文深入解析Conda环境创建中常见的'Solving environment: failed'和'ResolvePackageNotFound'报错原因,并提供从基础到高级的系统化解决方案。涵盖渠道配置、版本通配、环境文件编辑等实用技巧,帮助开发者快速解决conda环境创建问题,提升工作效率。

weixin_28677451的博客 258

java 中的 Annotation 注解学习笔记

java 中的 Annotation 注解什么是注解元注解@Target@Retention@Document@Inherited自定义注解 什么是注解 Annotation 是从JDK5.0 开始引入的新技术 作用1: 可以被程序读取,列如@Value 通过反射使用该注解读取配置文件信息 作用2: 本身不是程序,和注释差不多. 如: @Override, @Deprecated 内置注解 Annotation 格式以 @注解命名成 在代码中存在,还可以添加一些参数,如: @RequestMapping(

qq_38217393的博客 437

椭圆曲线点加的推导公式(一)

椭圆曲线点加推导过程

qq_32100199的博客 1517

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

Annotation

java中Annotation的详细用法

TumblerAh的博客 888

RK3568平台开发系列讲解(安卓篇)LED呼吸灯系统流程

1.app层封装后使用NotificationManager发出:NotificationManager.notify() 2.Android 系统架构中:一个manager类对应一个aidl接口,一个manager对应一个底层的服务,notification也是这个架构

内核笔记 3646

Java学习笔记 Annotation

Annotation 1、本次预计讲解的知识点 1、Annotation的作用 2、三种内置的Annotation的使用。 2、具体内容 对于软件程序开发实际上经过了三个发展过程: ·第一个过程:将所有与配置相关的内容直接写到代码之中。 ·第二个过程:将配置与程序代码独立,即:程序运行时候根据配置文件进行操作。 |---最严重问题...

nrxsh 567

使用MCAL的Fee模块集成ETAS存储协议栈

由于ETAS Fee模块导致初始化时间较长,且集成占用的内存较大,所以最终考虑使用MCAL中的Fee模块来集成ETAS的Nvm模块,本文介绍具体的集成方法注意:本文所涉及的集成前提是原有的ETAS协议栈已正常使用使用IFX Fee需要手动配置Fee,可能有出错的风险,最好是利用脚本自动生成代码来实现。另外,需要注意IFX的Fee中block数据没有CRC校验,如果使用该Fee,建议Nvm中加CRC校验(ETAS Fee中block自带CRC,可以不需要Nvm Crc),防止数据被意外篡改导致的异常。

赞的博客 404

基于未来出行解决方案的场景实例:城市空中交通(UAM)的飞行路径规划与避障

本文介绍了使用Simulink进行城市空中交通(UAM)飞行路径规划与避障的仿真方法。主要内容包括:1)UAM系统架构与核心挑战;2)详细建模步骤,从城市3D环境构建到飞行器动力学模拟;3)全局路径规划(A*/RRT*)和局部避障(DWA/APF)算法实现;4)多机协同与冲突解决;5)关键场景仿真与性能评估;6)高级功能拓展方向。通过Simulink的数字孪生系统,可有效验证UAM在复杂城市环境中的可行性,为未来立体交通发展提供技术支撑。

xiaoheshang_123的博客 257

Java学习笔记——Java 中的 Annotation(注释)

一、基本 Annotation Annotation 其实是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。 Java 提供的五个基本的 Annotation: ① @Override ② @Deprecated ③ @Suppress Warning ④ @Safe Varargs ⑤ @FunctionalInterface 使用 Annotation 时要在其前面增加 @ 符号,并把该 Annotation 当做一个修饰符使用,用于修饰它支持的程序元素; 1

Zzz5270的博客 545

基于Simulink进行光伏逆变器效率分析的仿真建模

特点能量转换:将光伏电池板产生的直流电转换为交流电。效率评估:分析逆变器在不同负载条件和环境条件下的效率。动态特性:考虑温度、光照强度等外部因素对逆变器效率的影响。挑战精确建模:准确地模拟光伏电池板、逆变器及其交互的动力学过程。多因素考量:需要同时考虑输入电压、电流、温度、光照强度等多种因素对逆变器效率的影响。集成度:需要与其他系统(如最大功率点跟踪MPPT算法、电网连接等)无缝集成,以实现全面的系统分析。首先明确要模拟的任务内容。输入条件(如光照强度、温度等)。

amy_mhd的博客 142

Java注解 Annotation学习笔记

注:该篇文章会与我的个人博客同步更新。欢迎移步https://cqh-i.github.io/体验更好的阅读效果。 什么是注解? Annotaion 是从JDK5.0开始引入的新技术. Annotaion的作用: 它不是程序本身,可以对程序作出解释(这一点,跟注释没什么区别) 可以被其他程序(比如:编译器等)读取(注释信息处理流程,是注解和注释的重大区别,如果没有注...

锦瑟年华,逐梦之人 466

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java annotation 覆写,Java学习笔记11--Annotation

Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息。java.lang.annotation Annotation接口是所有的Annotation都必须实现的接口。系统内建的Annotation在JDK1.5之后,系统中已经建立了如下的三个内建的Annotation类型,用户直接使用即可。@Overr...

weixin_39571749的博客 130

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java学习笔记:注解Annotation

java学习笔记:注解Annotation 注解Annotation ---- 1.注解的概念: 注解也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、抽象类是在同一个层次,同属于数据类型。 注释是给开发人员阅读的,注解是给计算机提供相应信息的。 2.作用: (1)编译检查:通过代码里标识的注解,让编译器能够实现基本的编译检查。例如: @Overrid...

黄道婆的专栏 415

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

『Java』注解(Annotation)学习笔记

文章目录前言内置注解元注解@Retention@Documented@Target@Inherited修饰代码的注解@Override@Deprecated@SuppressWarningsJava7+新注解自定义注解注解使用场景参考引用完 前言 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。注解就像一个标签,类、方法、变量、参数和包等都可以被标注,还支持标记注解的注解。被标注的对象在特定时候会被处理。 内置注解 Java内置了7个注解,3个在java.l

Ho1aAs‘s Blog 1159

Annotation注释 (二)——java学习笔记

特此声明: 以下内容大部分来自于疯狂Java一书和廖雪峰老师的教程,如需转载请注明这两个出处,本文仅供自身学习,查缺补漏之用。本文将会从两个角度来讲剩余的注解部分: 元注解 自定义Annotation 元注解除了上篇说的 java.lang提供了5个基本的Annotation之外,还在java.lang.annotation包下提供了6个Meta Annotation(元Annotation),其

Amour 494

java注解(annotation)学习笔记

注解定义 Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。 Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。 内置注解 @Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。

qq_44818849的博客 216

Java中Annotation学习笔记

Annotation就是注释,在J2SE 5.0中,注释是以‘@注释名’在代码中存在的,例如:J2SE 5.0内置的注释:@Override、@Deprecated;有的注释还可以添加一些参数值,例如:@SuppressWarnings(value="unchecked");对于这种只有一个参数,且参数名为value的注释,我们在使用时可以简写为:@SuppressWarnings("unchec...

hhwgaoshu的专栏 145

Java注解Annotation学习笔记

最近看到很多框架都在用注解,包括Android的和javaweb 的,但是对java注解确实不了解,就像之前对反射一样“只知其名,不知其用”,在昨天看了用法之后在这里做一个总结。根据我自己的理解,“注解”这个翻译确实很到位,不像反射一样给人摸不着头脑的感觉。“注解”看着其实很像另一个名词“注释”,他们俩的作用确实有些像,比如都是用一个东西来解读另一个东西,只是“注释”是用自然语言对该段代码进行解释让

牧羊少年 890

关于java annotation的学习笔记。。。

1. java包含三种标准注解以及四种元注解     标准注解      a. override  表示当前方法覆盖超类中的方法      b. deprecated 用于注释已经过期的方法,提示尽量不使用;使用该注解有时也会提示出警告信息(继承该注解的类)      c. suppressWarnings 消除提示出的警告   元注解     a. target   表示该注解用在什

zcs100的专栏 603

java annotation 学习笔记

annotation的作用是不用多说的,大家有目共睹。name

whk010的专栏 557

Java学习笔记——反射编程与Annotation

获取Annotation信息 在进行类或放啊定义的时候都可以使用一些列Annotation进行声明,于是如果要想获取这些Annotation信息,就可以直接通过反射来完成。在java.lang.reflect里面有一个AccessibleObject类,在本类中提供有获取Annotation类的方法: 获取全部Annotation:public Annotation[] getAnnotations() 获取指定Annotation:public <T extends Annotation>

weixin_44336181的博客 170

《Java编程思想》学习笔记17——注解Annotation

注解Annotation又叫元数据,是JDK5中引入的一种以通用格式为程序提供配置信息的方式。使用注解Annotation可以使元数据写在程序源码中,使得代码看起来简洁,同时编译器也提供了对注解Annotation的类型检查,使得在编译期间就可以排除语法错误。 1JDK内置的3中Annotation: 在JDK5中,内置了3个通用目的的注解Annotation,这三个内置的注解在java.la

Tony Chen的专栏 7140
下一篇: Java I/O学习笔记
AlainGogogo
博客等级 码龄18年 5粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值