美文网首页
Java注解

Java注解

作者: 今天要加班 | 来源:发表于2018-07-08 17:48 被阅读0次

注解机制简单的说就是给程序的元素(类、方法、属性)加上一个标记,然后在运行的时候通过反射机制获取该元素的标记,然后执行对应的逻辑,注解就相当于标记。

内建注解

Java中主要有以下三个默认注解:
1.Override 表示该方法将覆盖父类中方法
2.Deprecated 表示使用了废弃的不赞成使用的方法
3.SuppressWarning 表示抑制了程序的告警

元注解

元注解表示专门负责创建注解的注解
1.Document 说明该注解将被包含在javadoc中
2.Inherited 说明允许子类继承父类中的注解
3.Retention 注解的存活时间。SOURCE:存在源代码,注解将被编译器丢弃;CLASS:注解在编译后的class文件中可用,但会被VM丢弃;RUNTIME:VM将在运行期间保留注解,因此可以通过反射机制读取注解的信息
4.Target 表示该注解可以用于什么地方,注解类型所适用的程序元素的种类。CONSTRUCTOR:构造器的声明;FIELD:域声明;LOCAL_VARIABLE:局部变量声明;METHOD:方法声明;PACKAGE:包声明;PARAMETER:参数声明;TYPE:类、接口(包括注解类型)或enum声明

自定义注解

定义一个注解StrRule,用于修饰对象字符串类型的属性。注解包含两个属性,range用于设置字符串的长度范围,name用于设置修饰的字符串的名称。

package com.victor.technology.annotation;

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 StrRule
{
    public String range();
    
    public String name();
}

定义一个对象Student,并在name属性使用StrRule注解:

package com.victor.technology.annotation;

public class Student
{
    @StrRule(range = "1-32", name = "Student Name")
    private String name;
    
    private int number;

    public Student(String name, int number)
    {
        this.name = name;
        this.number = number;
    }

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public int getNumber()
    {
        return number;
    }

    public void setNumber(int number)
    {
        this.number = number;
    }
}

定义一个测试类,通过反射机制获取对象属性的注解,并获取设置的注解的值,然后执行对应的业务逻辑(可以是数据校验,此处没有扩展实现)

package com.victor.technology.annotation;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

public class AnnotationTest
{

    public static void main(String[] args)
    {
        Student stu = new Student("victor", 1);
        Field[] fields = stu.getClass().getDeclaredFields();
        for(Field field : fields)
        {
            Annotation[] annotations = field.getAnnotations();
            for(Annotation annotation : annotations)
            {
                String annotationName = annotation.annotationType().getSimpleName();
                if(annotationName.equals("StrRule"))
                {
                    StrRule rule = (StrRule) annotation;
                    String range = rule.range();
                    String name = rule.name();
                    System.out.println("Range: " + range + ", name: " + name);
                }
            }
        }
    }

}

执行结果如下:

Range: 1-32, name: Student Name

相关文章

  • 菜鸟学服务端技术----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/hrwouftx.html