使用Java 注解完成权限验证

本文介绍了Java注解的基本概念、定义与使用方法,包括元注解@Retention、@Target、@Inherited和@Repeatable。通过示例展示了如何自定义注解,并应用于权限验证场景,解释了注解的属性限制和本质。最后,讨论了如何通过反射技术获取和处理注解信息。
摘要由CSDN通过智能技术生成

概述

Java 注解用于为 Java 代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java 注解是从 Java5 开始添加到 Java 的。

注解在Java中也被定义为一种类型;使用关键字@interface进行定义,定义的格式与interface基本相同

如何定义与使用注解

定义一个MyAnnotation注解;并将注解定义运行时有效;可以在函数上使用。

//定义一个注解类型MyAnnotation
@Target({
   ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation{
   
  
}

下面使用在自定义类上使用这个注解;使用示例如下:

public class MyClass{
   
	@MyAnnotation
	public void setA(){
   
	
	}
}

元注解

在上例中定义了一个注解 MyAnnotation ;在定义注解时使用了@Retention @Target两个注解进行了声明;这两个注解在Java中称作为元注解

@Retention

@Retention元注解的作用是指示自定义注解保留的策略;策略分为源码 字节码 运行时;策略使用RetentionPolicy枚举类型标示分别对应为SOURCE CLASS RUNTIME

  • SOURCE通常用于编译阶段,在编译时有效 ,不会将信息写入字节码中;在运行时无法获取
  • CLASS策略长于SOURCE;会存在于字节码文件中,这也是Java默认的保留策略
  • RUNTIME策略在运行时可见;在自定义注解中使用较多的一种注解策略类型

@Target

@Target标示了注解可以在类型的那些地方使用,使用ElementType类型进行定义

  • Type 标示作用于类、接口、抽象类、枚举、注解等
  • FIELD 标示作用于对象类型中定义的字段
  • METHOD 标示作用于对象类型中定义的非构造函数
  • PARAMETER 标示作用于函数的参数
  • CONSTRUCTOR标示作用于对象类型定义的构造函数上
  • LOCAL_VARIABLE 标示作用于局部变量
  • PACKAGE 标示作用于包
  • TYPE_PARAMETER 标示作用于泛型 1.8加入
  • ANNOTATION_TYPE 标示用于注解类型
  • TYPE_USE 标示作用于一个类型 1.8加入

在自定义注解中需要让注解能同时作用于函数、类型、字段时可以使用数组的形式;使用{}进行属性的赋值;示例如下

@Target({
   ElementType.METHOD,ElementType.FIELD,ElementType.METHD})
public @interface MyAnnotation{
   

}

@Inherited

@Inherited的作用是让注解能够在继承的类之间向下传递;例如在A上声明了MyAnnotation自定义的注解;B继承自

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值