Java自定义注解
Java注解
Java注解是JDK5.0以后版本引入的新特性,其中有JDK提供的基本注解,也可以自定义注解。其中:
JDK提供的基本注解有
1,@SuppressWarnings,阻止编译器发出某些警告信息,其参数可以有:
deprecation:过时的类或方法警告
unchecked:执行了未检查的转换时(强转类型时)
fallthrough:switch程序通往下一种情况而没有break时的警告
path:在类路径,源文件路径中有不存在的路径时警告信息
serial:在可序列化的类上缺少serialVersionUID时警告
finally:任何finally子句不能完成时的警告
all:以上所有情况的警告
2,@ Deprecation
标记某个过时的类或方法
3,@ Override
写在方法的前面,用来标记方法是重写了某个父类的方法
自定义注解
自定义注解包括类注解,方法注解,参数注解,构造器注解,类的属性注解,包注解,局部变量注解,注解类注解。其中最常用的是类注解,方法注解,参数注解。
1,定义类注解:
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public @interface JoeyxOperation { public String code();
public String desc();
public String business() default “demo”; } |
2,定义方法注解:
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public @interface JoeyxResource { public String code();
public String desc();
public String policy() default “Required”; } |
3,给类上和方法上增加注解:
@JoeyxResource(code = “userManage”, desc = “User Manage Service”) public class UserService implements IUserService {
@Override @JoeyxOperation(code = “create”, desc = “Create Records”) public int addUser3system(UserVO user) {
return 0; }
} |
4,获取类和方法上的注解:
public class SecurityInterceptor { public static void check() { JoeyxResource rAnnotation = UserService.class .getAnnotation(JoeyxResource.class); Method[] methods = UserService.class.getDeclaredMethods(); System.out.println(“code:” + rAnnotation.code() + “\tdesc:” + rAnnotation.desc()); for (Method m : methods) { JoeyxOperation oAnnotation =m.getAnnotation(JoeyxOperation.class); System.out.println(“code:” + oAnnotation.code() +“\tdesc:” + oAnnotation.desc()); } }
public static void main(String[] args) { check(); } }
|
5,运行main方法后,结果为:
其中:
@Retention用来说明该注解的生命周期,可取参数有
RetentionPolicy.RUNTIME 注解可以保留到运行时
RetentionPolicy.SOURCE 注解保留在源文件中
RetentionPolicy.CLASS 注解保留在class文件中
@Target 用来说明该注解可以被声明在那些元素前
ElementType.TYPE 标记该注解只能被声明在类前
ElementType.METHOD 标记该注解只能被声明在方法前
ElementType.PARAMETER 标记该注解只能被声明在方法参数前
ElementType.FIELD 标记该注解只能被声明在类的属性前
ElementType.ANNOTATION_TYPE 标记该注解只能被声明在注解类前
ElementType.PACKAGE 标记该注解只能被声明在包前
ElementType.CONSTRUCTOR 标记该注解只能被声明在构造器前
ElementType.LOCAL_VARIABLE 标记该注解只能被声明在局部变量前
@Documented标记该注解可以出现在java文档中
@Inherited变价该注解可以被子注解集成
还没有评论,来说两句吧...