美文网首页
Java注解

Java注解

作者: 风起天蓝 | 来源:发表于2017-08-08 12:04 被阅读0次

1. 注解的定义


注解是元数据,是修饰数据的数据,在Java中使用注解来修饰类、方法或者属性,然后使用注解处理器来处理这些注解从而达到简化实现相关功能的目的,使得程序容易编写和扩展。最常见的是Spring 中的注解。
[注解必须要配合相应的注解处理器,如果没有处理器处理,注解将毫无意义,本质上注解是一种描述Java数据的一种元数据]

2. Java 中的基本Annotation(3种)


@Override,表示当前的方法定义将覆盖超类中的方法。

@Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。

@SuppressWarnings,关闭不当编译器警告信息。

3. 元注解meta-annotation (自定义注解)

Java中提供四个元注解来提供给开发人员自定义注解的能力。

@Document

@Documented用于描述其它类型的annotation应该被作为被标注的程序成员的公共API,因此可以被例如javadoc此类的工具文档化。Documented是一个标记注解,没有成员。

@Inherited

@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类

@Target

@Target表示该注解可以用于什么地方,可能的ElementType参数有:

1.CONSTRUCTOR:用于描述构造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部变量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述参数
7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

@Retention

@Retention作用:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(即:被描述的注解在什么范围内有效)取值(RetentionPoicy)有:

1.SOURCE:在源文件中有效(即源文件保留)
2.CLASS:在class文件中有效(即class保留)
3.RUNTIME:在运行时有效(即运行时保留)

4. 实例和使用建议

注解的可用的类型包括以下几种:所有基本类型、String、Class、enum、Annotation、以上类型的数组形式。元素不能有不确定的值,即要么有默认值,要么在使用注解的时候提供元素的值。而且元素不能使用null作为默认值。注解在只有一个元素且该元素的名称是value的情况下,在使用注解的时候可以省略“value=”,直接写需要的值即可。

public class Apple {

    @Vandor(van = "China")
    public String vandor;

    public int count;

    @useCase(methodName = "Apple Method")
    public void display(){
        System.out.print("This is a apple!");
    }
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface useCase {
    public String methodName() default "disPlay";
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Vandor {
    public String van();
}
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class AnnotationProcessor {
    public static void main(String[] args) {
        getAppleInfo(Apple.class);
    }

    public static void getAppleInfo(Class<?> clazz){
        Field[] fields = clazz.getFields();
        for(Field field:fields){
            if(field.isAnnotationPresent(Vandor.class)){
                String vanName =  field.getAnnotation(Vandor.class).van();
                System.out.println("apple vandor is : "+ vanName);
            }
        }
        for (Method m : clazz.getDeclaredMethods()) {
            useCase uc = m.getAnnotation(useCase.class);
            System.out.print("The method is : "+uc.methodName());
        }
    }

}

相关文章

  • 菜鸟学服务端技术----Spirng基础

    注解 Java基础加强总结(一)——注解(Annotation) java中的注解是如何工作的? java 注解 ...

  • 自定义注解

    java annotation基础 java注解分为标准注解和元注解。 标准注解是java为我们提供的预定义的注解...

  • Java注解的使用

    Java注解的使用 参考 廖雪峰java教程 使用注解 什么是注解(Annotation)?注解是放在Java源码...

  • Java原生注解和Spring注解的说明

    注解 java 原生注解 Spring 中的注解 一 Java原生注解 Java注解是在JDK1.5以后引入的新特...

  • Java 注解

    JAVA注解 Java 自带注解(系统注解) @Override 表示重写注解 @Deprecated 表示过时的...

  • 1.8 Java 注解annotation

    1.1 注解声明 Java注解Annotation,有声明注解和元注解 元注解:Java提供的元注解,所谓元注解就...

  • Java注解学习总结(脑图)

    注解的提取测试:定义注解: 测试注解提取: 参考:《Java编程思想》java注解

  • Java注解

    Java注解(Annotation)详解(一)——概述及JDK自带注解 Java注解(Annotation)详解(...

  • JAVA-注解 Annotation

    JAVA-注解 Annotation sschrodinger 2018/6/4 基本 注解 Java 注解用于为...

  • Java注解简介篇

    摘要 本文详细介绍java注解是什么,如何声明java注解,如何解析java注解。最后介绍JDK提供的几大基本注解...

网友评论

      本文标题:Java注解

      本文链接:https://www.haomeiwen.com/subject/qqltrxtx.html