java注解

javaSE5提供了注解。
内置了三种标准注解,以及四种元注解。
标准注解:

  1. @override 覆盖的方法
  2. @deprecated 不建议使用的方法
  3. @SuppressWarnings 关闭不当的警告信息
    元注解:专门负责新注解的创建

1.@Target 表示注解可以用于什么地方ElementType

.CONSTRUCTOR:构造器
.Fileld:域声明
.LOCAL_VARIABLE :局部变量声明
.METHOD :方法声明                                                                             .PACKAGE :包声明
.parameter :参数声明
.Type: 类,接口(包括注解类型),enum

2.Retention :表示在什么级别保存该信息:

SOURCE,被编译器丢弃
CLASS class文件中存在,但是vm丢弃
runtime vm中也存在,这样就可以使用反射调用了

3.Documented 将此注解包含在javadoc 中
4@Inherited 允许子类继承父类中的注解。
配合其他的使用。

注解元素的类型:

  1. 所有基本类型 int float
  2. String
  3. Class
  4. enum
  5. Annotation
    6,以上类型的数组
    通过5可以发现注解可以嵌套。默认值规则,必须定义。无论是默认值还是使用的时候赋值。但是不能为null。所以我们一般使用空字符串或者负数表示元素的状态

注解定义:使用@interface 类似于接口的定义方式。

//使用位置为方法
@Target(ElementType.METHOD)
//注解保存级别
@Retention(RetentionPolicy.RUNTIME)
public @interface UseCase{
    public int id(); //注解的元素,看起来像方法,没有元素的注解称之为标记注解
    public String description() default "no description"
}

注解使用:

public class PasswordUtils{
    @UseCase(id =12,description ="这是一个测试")//名-值对的形式
    public Boolean validatePassword(String password){
        return (password.matches("\\w*\\d"));
    }
    @UserCase(id = 23)
    public String encryptPassword(String password){
        return new StringBuilder(password.reverse().toString());
    }
}

注解如果没有注解处理器,他就和注释没有没有区别。
通过反射使用,相应的注解。也可以当做方法的一部分。
解析:将需要解析的类作为参数传入,通过反射,判断是否存在注解。
创建注解处理器:

public class UserCaseTracker{
    public static void trackUserCases(List<Interger>UserCase,Class<?> cl){
        for(Method m : cl.getDeclaredMethods()){
            UserCase uc = m.getDeclaredMethods();
            if(uc != null){
                System.out.println("Found Use Case" + uc.id() + uc.description());
            }
        }
    }
}
public class void main(String[] args){
    List<Integer> UseCases = new ArrayList<Integer>();
    Collections.add(UseCases,47,48,49,50);
    trackUserCases(UserCases,PasswordUtils.Class);
}

注解实例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值