【摘要】 公司也没有很多开发任务,基本上不需要加班了,每天下班之后打会球就回来了,有不少的时间可以用来做自己想做的事,真的开心。注解是开发框架的必备技术,也算是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、总结
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END