`

JAVA自定义注解(一)

阅读更多
java中元注解有四个:

1.@Retention
2.@Target
3.@Document
4.@Inherited

1.@Retention
:注解保留的位置
  @Retention(RetentionPolicy.SOURCE) :
                                    注解保留在源代码中,class文件中不包含,
                                    功能是与编译器交互,用于代码检测。
                                    如@Override,@Suppress Warings。
                                     额外效率损耗发生在编译时
  @Retention(RetentionPolicy.CLASS)  :
                                    默认的保留策略,注解会在class字节码文件中在,
                                    但运行时无法获得,<br/>这个级别需要添加JVM加载
                                    时候的代理(javaagent),
                                    使用代理来动态修改字节码文件
   @Retention(RetentionPolicy.RUNTIME):
                                    注解会在class字节码文件中存在,在运行时可以通
                                    过反射获取到

2.@Target
: 注解的作用目标

@Target(ElementType.FIELD):作用于(定义)字段枚举常量(注解)
@Target(ElementType.TYPE) :作用于(定义)接口、类、枚举、注解(注解)
@Target(ElementType.METHOD) :作用于(定义)方法(注解)
@Target(ElementType.PARAMETER) :作用(定义)方法参数(注解)
@Target(ElementType.CONSTRUCTOR) :作用(定义)构造函数(注解)
@Target(ElementType.LOCAL_VARIABLE):作用(定义)局部变量(注解)
@Target(ElementType.ANNOTATION_TYPE):作用(定义)注解
@Target(ElementType.PACKAGE) :作用包  

3.@Document
: 该注解将被包含在javadoc中

4.@Inherited
:说明子类可以继承父类中的该注解

说明:
@interface 是自定义注解的写法,与接口不同
自定义注解可以显示传值,或隐式默认值
例如:
public @interface DoSomething {
    public String name() default "write";
}

显示:
@DoSomething(name = "walidake")//可以显式传值进来,此时
                name=walidake
public class UseAnnotation {

}

隐式:
@DoSomething//如果不传值,则默认name=我们定义的默认值,即我们上面
                定义的"write"
public class UseAnnotation {

}

当注解含有value()时不需要指定具体名称
public @interface DoSomething {
    public String value();
    public String name() default "write";
}

@DoSomething("walidake")
public class UseAnnotation {
//name的value值
}

“普通注解”只能用来注解“代码”,
而“元注解”只能用来注解 “普通注解”。

注解集成
public class UseInheritedAnnotation{
    @UnInheritable
    @Inheritable
    public static class Super{

    }

    public static class Sub extends  Super {

    }

    public static void main(String... args){

        Super instance=new Sub();
        System.out.println(Arrays.toString(instance.getClass().getAnnotations()));
    }
}

自定义注解语法格式:  
public @interface 注解名 {定义体}


经典案例:mybatis mapper接口的调用实现
以上一般在自定义Field Method Class 注解中使用


5.@Override 
:用于标识该方法继承自超类<br/>当父类的方法被删除或修改了,编译器会提示错误信息

6.@Deprecated
:表示该类或者该方法已经不推荐使用<br/>如果用户还是要使用,会生成编译的警告

7.@SuppressWarnings
:用于忽略的编译器警告信息

等等

后续章节(二) mybits 注解模拟
        (三) 使用场景分析与举例(Method 模板,节省代码量,简洁,减少重复代码)(Field参数默认值设置,减少重复代码)
分享到:
评论

相关推荐

    java 自定义注解验证

    在本案例中,作者创建了三个自定义注解,具体细节虽未详述,但我们可以深入探讨一下Java自定义注解的基本概念、创建过程以及如何进行验证。 首先,我们需要理解Java注解的基本原理。注解是一种元数据,它提供了一种...

    java自定义注解接口限流demo

    java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo; java自定义注解接口限流demo...

    Java自定义注解实例

    Java自定义注解是Java编程语言中的一个重要特性,它允许程序员在代码中插入元数据,这些元数据可以被编译器或运行时环境用来执行特定的任务。自定义注解不仅提高了代码的可读性,还简化了代码处理,特别是在框架和库...

    Java自定义注解使用反射获取字段注解

    Java自定义注解是Java语言中的一个重要特性,它允许我们创建自己的元数据,为代码提供额外的信息。在Java中,注解(Annotation)主要用于编译器检查、代码生成、运行时处理等方面。本文将深入探讨如何通过反射机制来...

    java自定义注解实践

    "java自定义注解实践" Java 自定义注解实践是 Java 语言中的一项重要特性,它可以使开发者自定义注解,以满足不同的需求。在本文中,我们将详细介绍 Java 自定义注解的概念、特点、实现方式及实践应用。 概念 ----...

    自定义注解实现伪动态传参的小demo

    在这个“自定义注解实现伪动态传参的小demo”中,我们将探讨如何创建一个自定义注解,以允许在注解中传递类似于动态参数的数据。 首先,自定义注解的定义通常以`@interface`关键字开始,我们可以定义一些元素(也...

    java自定义注解和通过反射获取注解

    Java自定义注解和通过反射获取注解是Java编程中重要的高级特性,它们极大地增强了代码的可读性和可维护性。注解(Annotation)是一种元数据,提供了在编译时和运行时对代码进行标记的方法,而反射(Reflection)则是...

    java自定义注解实现由类自动生成表

    在Java编程中,自定义注解(Annotation)是一种强大的元数据机制,允许程序员在源代码中插入信息,这些信息可以被编译器、IDE或运行时环境用来进行各种处理。自定义注解使得代码更加可读,易于维护,并且可以自动化...

    java 自定义注解例子

    本教程将通过一个超市自动售卖机的例子来详细讲解如何在Java中实现自定义注解。 首先,我们需要了解注解的基本结构。在Java中,注解以`@`符号开头,后面跟着注解的名称。自定义注解的定义类似于接口,但使用`@...

    Java自定义注解与spring BeanPostProcessor详解

    Java自定义注解和Spring的BeanPostProcessor是Java企业级开发中的两个重要概念,它们在构建灵活、可扩展的应用程序中发挥着关键作用。本文将深入探讨这两个话题,并结合源码分析,帮助开发者更好地理解和应用。 ...

    java自定义注解

    Java自定义注解是Java平台提供的一种元编程机制,它允许程序员在代码中插入特定的标记,这些标记可以在编译时或运行时被处理器解析,从而实现特定的功能。自定义注解可以用来增强代码的可读性,简化代码处理,以及...

    实现生成自定义注解的实体类

    在Java编程语言中,自定义注解是一种强大的工具,它允许开发者创建自己的元数据,以提供额外的信息或规范代码的特定行为。自定义注解可以应用于类、接口、方法、变量等不同层级,使得代码更加模块化,易于理解和维护...

    excel导入动态校验,自定义注解动态校验

    本文将详细探讨"Excel导入动态校验,自定义注解动态校验"这一主题,旨在帮助你理解和掌握如何在处理Excel数据时进行有效的验证和校验。 首先,Excel导入动态校验是指在将Excel数据导入到系统或数据库时,对数据进行...

    spring aop 自定义注解保存操作日志到mysql数据库 源码

    3、对spring aop认识模糊的,不清楚如何实现Java 自定义注解的 4、想看spring aop 注解实现记录系统日志并入库等 二、能学到什么 1、收获可用源码 2、能够清楚的知道如何用spring aop实现自定义注解以及注解的逻辑...

    java 自定义注解的实例详解

    Java 自定义注解是 Java 语言中的一种重要特性,它可以用于创建文档,跟踪代码中的依赖性,并且可以执行编译时期检查。自定义注解可以让开发者根据需要创建自己的注解,以满足特定的需求。在本文中,我们将详细介绍 ...

    java 自定义注解

    Java自定义注解是Java平台提供的一种元数据机制,它允许程序员在代码中添加额外的信息,这些信息可以被编译器、JVM或其他工具在编译时或运行时读取,用于实现各种功能,如代码生成、代码分析、依赖注入等。...

    自定义注解实现拦截sql.rar

    在Java开发中,自定义注解是一种非常强大的工具,它允许我们为代码添加元数据,以便在运行时或编译时进行处理。本示例中,“自定义注解实现拦截SQL”是关于如何通过注解来动态修改执行的SQL语句,以在其中增加特定的...

    java 元注解+拦截器实现自定义注解.rar

    java 元注解+拦截器实现自定义注解 @CmwAutoWired:自定义依赖注入 注意:注入的接口和实现类需要在同一包名下,注解的是类则无限制 @FieldAnnotation:自定义属性注解 @MethodAnnotation:自定义方法注解 @...

    Java自定义注解md,学习代码

    Java自定义注解是Java语言中的一个重要特性,它允许开发者创建自己的元数据,为代码提供额外的信息,这些信息可以被编译器或者运行时环境用来进行特定的处理。自定义注解可以用于代码的编译检查、代码生成、运行时...

Global site tag (gtag.js) - Google Analytics