首页 > 编程知识 正文

java自定义注解实现缓存,java自定义注解实现类

时间:2023-05-04 17:41:37 阅读:158458 作者:1138

引言

我第一次去杭州参加面试的时候,听到了定制评论,但当时并不清楚。 现在简单地写的话,就是对过去的说明。

自定义注释

虽然这里不讨论注释的定义,但是自定义注释的场景有很多。 例如,登录、权限拦截、日志以及各种框架。 以下,具体就如何实现进行说明。 下面,我们将直接查看java提供的四个元注释。 (角色:负责对其他评论的评论)。

1,@Target (为了记述修饰对象的范围) ) ) ) ) ) ) )。

范围采用名为ElementType的枚举类的值。

ANNOTATION_TYPE (注释型声明)

CONSTRUCTOR (构建方法声明) )。

字段声明

LOCAL_VARIABLE (局部变量声明) )。

METHOD (方法声明)。

包声明)

参数声明) )

TYPE (包括类、接口)注释类型)或枚举声明) )。

2、@Retention (评论类型的评论要保留多久) ) ) )。

范围采用名为RetentionPolicy的枚举类的值。

CLASS编译器将注释记录在类文件中,但虚拟机在运行时不需要保留注释

RUNTIME编译器将注释记录在类文件中,虚拟机在运行时会保留注释,以便可以反射读取

源编译器放弃的注释

3、@Document (进行文档转换) )

4,@Inhrited (已标记的类型将被继承) )。

例如:

以上定义虽然说明起来很繁琐,但是让我们来看一下简单的示例代码。 我想你很快就能理解了。

步骤1 )定义两个自定义注释,用于限定属性、标记名称和标记性别。

import Java.lang.annotation.element type; import Java.lang.annotation.retention; import Java.lang.annotation.retention policy; import Java.lang.annotation.target; @ retention (retention policy.runtime ) target ) element type.field (public @ interfacename ) /名称自定义注释public String value import Java.lang.annotation.retention; import Java.lang.annotation.retention policy; import Java.lang.annotation.target; @ retention (retention policy.runtime ) target ) element type.field (public @ interfacesex ) /性别自定义注释publicenumgendertype privategendertype(stringarg0) { this.genderStr=arg0; } @Override public String toString () { return genderStr; } } GenderType gender () default GenderType.Male; (步骤2 )将自定义注释标记为属性

public class person { @ name (value=' cool _ summer _ moon ' ) public String name; 公共字符串age; @ sex (gender=sex.gender type.male ) public String sex; 公共字符串获取名称() { return name; }publicvoidsetname(stringname ) { this.name=name; } public String getAge () { return age; }公共void setage (stringage ) { this.age=age; } public String getSex () { return sex; }publicvoidsetsex(stringsex ) { this.sex=sex; }步骤3 :定义取刚才标记的属性值的测试工具类

import java.lang.reflect.Field; publicclassannotionutils { publicstaticstringgetinfo (class )? cs({stringresult=' ' ); field [ ] declared fields=cs.getdeclaredfields (; for (field field : declared fields ) if ) field.isannotationpresent (name.class ) ) name annotation=field.get annotation result=(field.getname ) )、(: )、value(n ); } if (field.isannotationpresent (sex.class ) ) sex annotation=field.get annotation (sex.class ); String value=annotation.gender ().name ); result=(field.getname ) )、(: )、value(n ); } }返回结果; } publicstaticvoidmain (string [ ] args ) stringinfo=getinfo (person.class ); system.out.println(info ); }执行上述程序的结果如下。

name : cool _ summer _ moon sex : male结束语

自定义注释的基本功能的说明到此结束。 使用自定义注释进行权限拦截的方法交给大家吧。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。