Java自定义注解

Java注解

Java注解是JDK5.0以后版本引入的新特性,其中有JDK提供的基本注解,也可以自定义注解。其中:

JDK提供的基本注解有

1@SuppressWarnings,阻止编译器发出某些警告信息,其参数可以有:

deprecation:过时的类或方法警告

unchecked:执行了未检查的转换时(强转类型时)

fallthroughswitch程序通往下一种情况而没有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方法后,结果为:

JAVA注解开发

其中:

@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变价该注解可以被子注解集成

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值