自定义Annotation
早就知道jdk5加了新特性Annotation,但是没研究过,前几天公司培训,有一部分是介绍jdk5新特性的,一个是注解一个泛型
今儿复习一下注解
//用@Deprecated声明该方法不建议使用
@Deprecated public void doSomething1(){
Map map = new HashMap();
map.put("some", "thing");
System.out.println(map);
}
//用@SuppressWarnings声明不再进行类型检查
@SuppressWarnings(value={"unchecked"})
public void doSomething2(){
Map map = new HashMap();
map.put("some", "thing");
}
写一个自定义注解先
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
//要在运行时使用这个注解,必须声明成RUNTIME
Annotation分为三种级别:RUNTIME、CLASS、SOURCE
@Retention(RetentionPolicy.RUNTIME)
public @interface SomeAnnotation{
String value();
String name();
}
下面来使用这个自定义注解:
import java.lang.reflect.Method;
public class AnnotationTest {
@SomeAnnotation(value="value1",name="name1")
public void doSomething3(){
}
public static void main(String[] args){
Class<AnnotationTest> c = AnnotationTest.class;
try {
//利用反射得到方法doSomething3
Method method = c.getMethod("doSomething3");
//查找doSomething3方法是否有SomeAnnotation的Annotation
if(method.isAnnotationPresent(SomeAnnotation.class)){
System.out.println("找到SomeAnnotation");
//得到SomeAnnotation
SomeAnnotation annotation = method.getAnnotation(SomeAnnotation.class);
System.out.println("annotation.value="+annotation.value());
System.out.println("annotation.name="+annotation.name());
}else{
System.out.println("没有找到omeAnnotation");
}
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
}
}
输出结果:
找到SomeAnnotation
annotation.value=value1
annotation.name=name1
本文转自 dogegg250 51CTO博客,原文链接:http://blog.51cto.com/jianshusoft/635043,如需转载请自行联系原作者
自定义Annotation相关推荐
- java简单自定义Annotation
为什么80%的码农都做不了架构师?>>> 原文内容比较多,这里就简单地说一下.java 5以后增加了3个annotation, @Override @Deprecated @S ...
- Java注解Annotation的用法 - 自定义Annotation实现
Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据. Java语言中的类.方法.变量.参数和包等都可以被标注.和Javadoc不同,Java标注可以通过反射获取标 ...
- 使用自定义annotation接口进行aspectj动态缓存
由于系统需求需 要对各个接口进行key-value缓存(以参数为key,返回的对象为value),当然对于这种情况首先考虑到的是使用aop,前段时间看过 aspectj的一些介绍,借此机会正好加以应用 ...
- java 定义动态接口_使用自定义annotation接口进行aspectj动态缓存
packagecom.***.shine.aspectj; @AspectpublicclassMethodCacheAspectJ { Log logger=LogFactory.getLog(Me ...
- Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 前言 在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求, ...
- Spring Boot中使用自定义Annotation来实现接口自动幂等
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | jianshu.com/p/c806003a8 ...
- 如何防止token被拦截_Spring Boot+Redis+拦截器+自定义Annotation实现接口自动幂等
今天主要给大家介绍使用springboot和拦截器.redis来优雅的实现接口幂等.正文开始: 在实际的开发项目中,一个对外暴露的接口往往会面临很多次请求,我们来解释一下幂等的概念:任意多次执行所产生 ...
- java自定义annotation_Java自定义annotation | 学步园
1. Annotation需要声明为@interface 2.@Target: 表示该注解可以用于什么地方.可用ElementType枚举类型主要有: TYPE : 类.接口或enum声明 FIEL ...
- Java自定义Annotation方法
2019独角兽企业重金招聘Python工程师标准>>> 1. 基本语法 Java代码 import java.lang.annotation.ElementType; import ...
最新文章
- mysql web备份软件_Windows下实现MySQL自动备份的批处理(复制目录或mysqldump备份)
- gperf工具的使用
- 计算机三级会保研加分吗,366所高校有保研资格,除了对成绩有要求外,还有哪些要求?...
- pytorch:加载预训练模型(多卡加载单卡预训练模型,多GPU,单GPU)
- 使用jquery datatables插件遇到fnReloadAjax的问题
- Intel 64/x86_64/IA-32/x86处理器 - 通用指令(3) - 逻辑指令/移位指令
- [团队项目]英语学习助手之 NABC 模型
- 关于win10专业版无法下载暴雪战网的解决方案
- P1192 台阶问题
- 链游界王炸巨作 一个足够炫酷的NFT赛犬游戏震撼问世
- 2017中兴算法挑战赛(迪杰斯特拉)
- Mac关闭某个软件的所有窗口
- 切换窗口快捷键 你知道吗?
- 《置身事内》读书笔记第一章 地方政府的权利与事务
- 数据可视化:科研论文配色
- python设置文件权限_python通用权限框架
- OneDrive登录问题
- java实现word文档转pdf,并添加水印
- 一段php代码,请问一段PHP代码是什么意思?
- tomcat 解决startup启动乱码
热门文章
- 预发布环境,Tag发布机制和可重复的部署过程
- 个人博客前端模板_博客设计——概述
- Intellij IDEA运行报Command line is too long解法
- SqlServer中获取所有数据库,所有表,所有字段
- 深入理解 Java 内存模型(转载)
- JAVA----------------------华为机试--------------------------删除字符串中出现次数最少的字符...
- 机器学习 Softmax classifier (无隐含层)
- 转载:T-SQL语句大全
- Golang gRPC 示例
- 手机视频直播解决方案