`

Java Annotation之介绍篇 (2)

    博客分类:
  • Java
阅读更多

我们在Java Annotation之介绍篇 1里,比较详细地介绍了Annotation的作用,定义,JAVA标准Annotation等。本文着重介绍怎么样自定义Annotation以及使用自定义的Annotation
本文不对范例作详细解释,有不明白的地方请参考:Java Annotation之介绍篇 1
Annotation
是一种特殊的interface。所以可以在annotation里定义方法,属性;也可以让某个类从annotation继承(implements)。

下面从简单地范例开始,让我们一步步加深对annotation的了解。

无任何方法/属性Annotation范例:

MyAnnotation0.java

1.     package com.test.annotation;   

2.       

3.     public @interface MyAnnotation0 {   

4.            

5.     }  

package com.test.annotation; 

public @interface MyAnnotation0 { 

}


MyAnnotation0
为一个无任何方法和属性的annotation
使用MyAnnotation0
TestMyAnnotation0.java

1.     @MyAnnotation0  

2.     public class TestMyAnnotation0 {   

3.         @MyAnnotation0  

4.         public void testMethod() {   

5.       

6.         }   

7.     }  

@MyAnnotation0

public class TestMyAnnotation0 {

    @MyAnnotation0

    public void testMethod() { 

    }

}

具有一个value方法Annotation范例:

MyAnnotation1.java

1.     public @interface MyAnnotation1 {   

2.            

3.         /**  

4.          * value method  

5.          * @return value  

6.          */  

7.         public String value();   

8.     }  

public @interface MyAnnotation1 {

      /**

     * value method

     * @return value

     */

    public String value();

}


MyAnnotation1
具有一个名为value的方法。
MyAnnotation1
使用:
TestMyAnnotation1.java

1.     @MyAnnotation1("hello")   

2.     public class TestMyAnnotation1 {   

3.         @MyAnnotation1(value="world")   

4.         public void testMethod() {   

5.         }   

6.     }  

@MyAnnotation1("hello")

public class TestMyAnnotation1 {

    @MyAnnotation1(value="world")

    public void testMethod() {

    }

}
可以通过@Annotation(方法名1=1, 方法名2=2, …)的形式给annotation赋值。只有一个方法的时候,可以直接省略为:@Annotation(1) 的赋值形式。当方法返回一个数组时,可以用 方法名={1, 2, …}给其赋值。

具有一个value方法和一个属性Annotation范例:

如果必要,还可以在annotation里为其定义属性。如下:
MyAnnotation2.java

1.     @interface MyAnnotation2 {   

2.         public String value();   

3.         public String myProperty = "hello world";   

4.     }  

@interface MyAnnotation2 {

    public String value();

    public String myProperty = "hello world";

}
其中,myProperty只能申明为public或无public修饰(无public修饰时也默认为public)为static, final属性(即使不写也默认为static, final)。

使用例:
TestMyAnnotation2

1.     class TestMyAnnotation2 {   

2.         public static void main(String[] args) {   

3.             System.out.println(MyAnnotation2.myProperty);   

4.         }   

5.       

6.         @MyAnnotation2("")   

7.         public void testMethod1() {   

8.         }   

9.     }  

class TestMyAnnotation2 {

    public static void main(String[] args) {

        System.out.println(MyAnnotation2.myProperty);

    } 

    @MyAnnotation2("")

    public void testMethod1() {

    }

}
上例会打印出:

hello world

 

复杂型annotation的定义与使用

本节介绍较为复杂的annotation定义与使用。
先看代码:
MyAnnotation3.java

1.     public @interface MyAnnotation3 {   

2.         public String value();   

3.         public String[] multiValues();   

4.         int number() default 0;   

5.     }  

public @interface MyAnnotation3 {

    public String value();

    public String[] multiValues();

    int number() default 0;

}
MyAnnotation3
具有一个返回Stringvalue方法,返回String[]multiValues 方法;还有一个返回int number方法。其中number方法具有默认值0

使用例:
TestMyAnnotation3.java

1.     class TestMyAnnotation3 {   

2.         @MyAnnotation3(value = "call testMethod1", multiValues={"1""2"}, number = 1)   

3.         public void testMethod1() {   

4.       

5.         }   

6.       

7.         @MyAnnotation3(value = "call testMethod2", multiValues={"1""2"})   

8.         public void testMethod2() {   

9.       

10.       }   

11.   }  

class TestMyAnnotation3 {

    @MyAnnotation3(value = "call testMethod1", multiValues={"1", "2"}, number = 1)

    public void testMethod1() { 

    } 

    @MyAnnotation3(value = "call testMethod2", multiValues={"1", "2"})

    public void testMethod2() {

     }

}


number
具有默认值,所以标注时可以不为其赋值。其余方法则必须通过上面介绍的方法赋值。multiValues返回一个String[]数组,所以可以通过multiValues={"1", "2"}为其赋值。

本文对怎么自定义Annotation进行了介绍,我们将在以后的文章里,着重介绍Annotation的应用。

分享到:
评论

相关推荐

    Java Annotation的讲解和例子

    本篇将深入探讨Java注解的基本概念、类型以及如何使用。 一、注解的定义与分类 1. 定义:Java注解是一种特殊的声明,可以附加到类、接口、方法、变量等元素上。它们以`@`符号开头,后跟注解的名称。 2. 分类: -...

    重难点之JavaAnnotation手册.pdf

    在《Java Annotation入门》之后的这篇《重难点之JavaAnnotation手册》中,作者深入探讨了Annotation的概念、定义以及其在Java开发中的应用。 一、Annotation是什么? Annotation是一种在代码中添加的特殊注解,用于...

    Java基础之注解Annotation初入篇_刘永雷

    学习java自定义注解的小例子,处理运行时注解方法,可以结合博客学习,博客地址: http://blog.csdn.net/liuyonglei1314/article/details/59494503

    JavaAnnotation手册[借鉴].pdf

    在《Java Annotation入门》的基础上,这篇手册深入探讨了Annotation的定义、使用和功能。 一、Annotation的本质 Annotation提供了一种附加信息到程序元素(如类、方法、变量等)的方式,这些信息被称为元数据。元...

    Java实战篇:设计自己的Annotation

    ### Java实战篇:设计自己的Annotation #### 一、Java中的内置Annotation类型介绍 在Java的世界里,Annotation(注解)的应用越来越广泛。本文将重点介绍Java 1.5及以后版本中内置的三种常用注解类型及其应用方式...

    Java annotation元注解原理实例解析

    在这篇文章中,我们将深入探讨Java annotation的原理和实例解析,包括元注解的定义、种类、生命周期和使用场景等。 元注解的定义 Java中的元注解是指注解的注解,包括 @Retention、@Target、@Documented、@...

    Java注解Annotation验证

    Java注解Annotation用起来很方便,也越来越流行,由于其简单、简练且易于使用等特点,很多开发工具都提供了注解功能,不好的地方就是代码入侵比较严重,所以使用的时候要有一定的选择性。 这篇文章将利用注解,来做...

    Annotation--学习:JDK内建Annotation

    在本篇中,我们将深入探讨JDK内置的Annotation,了解它们的用途、工作原理以及如何在实际开发中应用。 1. **注解的基本概念** 注解是一种特殊类型的声明,可以附加到类、接口、字段、方法、构造器等程序元素上。...

    Java实战篇:设计自己的Annotation.pdf

    ### Java实战篇:设计自己的Annotation #### 一、概述 在Java编程中,注解(Annotation)作为一种元数据,能够为代码提供额外的信息,并且在编译时或运行时可以被处理工具读取和利用。自Java 1.5版本引入以来,...

    Java Annotation注解

    本篇将深入探讨Java Annotation注解的相关知识点。 1. **注解类型**: Java提供了三种类型的注解:源码级注解、编译器级注解和运行时注解。源码级注解在编译后不保留,只用于源码阶段;编译器级注解会影响编译过程...

    通过Java annotation以及反射机制实现不同类型通用的数据库访问接口

    在Java编程中,注解(Annotation)和反射(Reflection)是两个非常强大的工具,它们能够帮助我们实现更灵活、更具动态性的代码。本篇将详细探讨如何利用这两者来实现一个通用的数据库访问接口,以适应不同类型的...

    java私塾跟我学系列-java篇

    Java私塾跟我学系列是为Java初学者精心编纂的一套教程,旨在系统地介绍Java编程语言的基础知识和实际应用。这个系列涵盖了从语言基础到高级特性的全面内容,是编程爱好者入门和进阶的理想资源。 Java是一种面向对象...

    java reflect and annotation programming

    通过实现`javax.annotation.processing.Processor`接口并将其声明在`META-INF/services/javax.annotation.processing.Processor`文件中,可以让Java编译器在编译时自动调用处理器。 总的来说,Java反射和注解编程是...

    Hibernate Annotation 中文文档

    以上是对Hibernate Annotation的简要介绍,深入理解和熟练应用这些注解,将有助于提升你在Java持久化领域的专业技能。对于更详细的用法和高级特性,建议查阅《Hibernate Annotations参考文档-3.20》这份资料,以获取...

    annotation httpClient(annotation类型应用程序设计举例)

    文档由五篇博客组成,说明了如何使用代理技术实现Annotation HttpClient通过,阅读这五篇博客,应该能够大致了解如何实现一个Annotation类型应用的框架。此外,配备了相应的Annotation HttpClient的源码,以供大家...

    annotation(java注解类型,区别)

    本篇文章将深入探讨Java中的注解类型及其区别。 1. **类型注解(Type Annotation)** 类型注解可以在类、接口、枚举、变量、方法和参数类型上使用。它们提供了对类型层次结构的元信息,例如`@NonNull`用于表示参数...

    Java文档五百篇

    此外,文档还会涉及Java的高级特性,如Lambda表达式、Stream API、Optional类、注解(Annotation)等,这些都是Java 8及以后版本引入的新特性,极大地丰富了Java的编程方式。同时,文档也可能会讲解到Java的模块系统...

    Spring Annotation简介一

    这篇博客将深入探讨Spring Annotation的基础知识,以及如何在实际项目中应用。 Spring Annotation的引入主要是为了解决XML配置的繁琐问题。在传统的Spring应用中,大量的bean配置信息存储在XML文件中,这不仅增加了...

    《Java语言程序设计(进阶篇)》 课后习题第23章代码chapter23.rar

    《Java语言程序设计(进阶篇)》是深入学习Java编程的一本教材,其第23章的内容可能涉及了高级Java特性和编程实践。在这个压缩包"chapter23.rar"中,我们很可能会找到与这一章节相关的源代码示例,用于帮助读者理解...

Global site tag (gtag.js) - Google Analytics