Java 注解说的明明白白,清清楚楚,记得点赞关注【奔跑吧!JAVA】
【摘要】 公司也没有很多开发任务,基本上不需要加班了,每天下班之后打会球就回来了,有不少的时间可以用来做自己想做的事,真的开心。注解是开发框架的必备技术,也算是Java中相对高级的技术,不知道为什么一直没有想起来写,今天写一下,让我们开始吧。1、注解是什么 Java 注解用于为 Java 代码提供元数据,看完这句话也许你还是一脸懵逼,用人话说就是注解不直接影响你的代码执行,仅提供信息。接下我将从注解的...
1、注解是什么
2、jdk支持的注解有哪些
2.1 三种常用的注解:
deprecation :过时的类或方法警告。
unchecked:执行了未检查的转换时警告。
allthrough:当Switch程序块直接通往下一种情况而没有Break时的警告。
path:在类路径、源文件路径等中有不存在的路径时的警告。
serial:当在可序列化的类上缺少serialVersionUID定义时的警告。
finally:任何finally子句不能完成时的警告。
all:关于以上所有情况的警告
2.2 元注解
3、注解实例
-
1、自定义注解
package org.pdool.anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author 香菜
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CheckEnum {
}
-
2、在对应的方法上增加注解
package org.pdool.anno;
/**
* 资源枚举类
* @author 香菜
*/
public enum ResType {
GOLD(1),
DIAMOND(2),
//注意:此处重复
SILVER(2);
int type;
@CheckEnum
public int getType() {
return type;
}
ResType(int type) {
this.type = type;
}
}
-
3、在项目启动的时候检查注解的枚举
package org.pdool.anno;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;
/**
* @author 香菜
*/
public class Aain {
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException {
// 获取有注解的方法
Method[] declaredMethods = ResType.class.getDeclaredMethods();
Method annoMethod = null;
for (Method declaredMethod : declaredMethods) {
CheckEnum annotation = declaredMethod.getAnnotation(CheckEnum.class);
if (annotation != null){
annoMethod = declaredMethod;
break;
}
}
Set<Object> set = new HashSet<>();
// 遍历每个枚举的id
Object[] oo = ResType.class.getEnumConstants();
for (Object o : oo) {
Object invoke = annoMethod.invoke(o);
if (!set.contains(invoke)){
set.add(invoke);
}else {
System.out.println("重复的key "+ o +" -- "+ invoke);
}
}
}
}
4、总结
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)