• Java注解


    前言

    注解(也被称为元数据)为我们在代码中添加信息提供了一中形式化的方法,是我们可以在稍后的某个时刻非常方便地使用这些数据;

    基本语法

    Javase5自带的标准注解

    定义在了Java.lang中

    • @Override,表示当前方法的定义将会超类中的方法。
    • @Deprecated,如果程序使用了该注解的元素,编译器会发出警告信息。个人理解为过时吧;
    • @SuppressWarnings,关闭不当的编译器警告信息;

    四个元注解

    元注解专职负责注解其他的注解


    @Target 表示该注解可以用于什么地方。可能的ElementType参数有:
    CONSTRUCTOR: 构造器的声明
    FIELD : 域声明(包括enum实例)
    LOCAL_VARIABLE :局部变量声明
    METHOD : 方法声明
    PACKAGE :包声明
    PARAMETER :参数声明
    TYPE :类,接口(包括注解类型)或enum声明
    @Retention 表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数:
    SOURCE :注解将被编译器丢弃
    CLASS :注解在class文件中可用,但会被VM丢弃
    RUNTIME :VM将在运行时期也保留注解,因此可以通过反射获取注解的信息
    @Documented 将次注解包含在Javadoc中
    @Inherited 允许子类继承父类中的注解

    注解中的元素

    注解元素的可用类型:

    • 所有的基本类型(int,float,double,boolean,long,short,byte,char)
    • String
    • Class
    • enum
    • Annotation
    • 以上类型的数组形式

    如果使用其他类型,编译器会报错,也不允许使用其他任何包装类型;

    自定义注解

    注解源代码

    /**
     * @author gyc
     * @date 2018/8/2
     */
    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface AnnotationOne {
        String name() default "";
        int age() default 1;
    }
    

    测试代码

    public class Test {
        public static void main(String[] args) throws ClassNotFoundException {
            //获取class
            Class<?> aClass = Class.forName("com.example.demo.annotation.one.User");
            //获取类中的定义
            Method[] declaredMethods = aClass.getDeclaredMethods();
            for (Method method:declaredMethods){
                //根据注解class对象获取method的注解
                AnnotationOne annotation = method.getAnnotation(AnnotationOne.class);
                System.out.println(method.getName()+"的注解:");
                System.out.println("name的值是:"+annotation.name()+"  age的值是:"+annotation.age());
                System.out.println();
            }
        }
    }
    class User{
        @AnnotationOne(name = "aaa",age = 10)
        public void testOne(){
        }
        @AnnotationOne()
        public void testTwo(){
        }
    }
    

    运行结果:

    testOne的注解:
    name的值是:aaa   age的值是:10
    
    testTwo的注解:
    name的值是:   age的值是:1
    

    总结

    • 整体上来说还是没有什么难度吧,很快就能入门,前提是要知道反射
    • 平时开发过程中自己几乎不会定义注解,但是使用的注解却不计其数,也大概知道了注解的原理
  • 相关阅读:
    函数終探------匿名函数
    再探函数2---函数的嵌套与装饰器
    无需触摸芯片的触摸电路
    单芯片移动电源方案——1A同步升压5V--TP4351B
    HTML列表元素
    HTML表格元素
    HTML基本元素
    创建HTML5文档
    HTML5环境安装
    windows本地搭建https环境,tomcat使用https协议
  • 原文地址:https://www.cnblogs.com/guoyuchuan/p/9467377.html
Copyright © 2020-2023  润新知