java之自定义注解入门

定义注解与定义接口类似,只是比接口多了个@符号,可以在注解中定义方法,简单例子如下:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Description
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Description {
    String value() default "no description";
}

它有以下特性:

1、注解方法不能有参数。

2、注解方法返回值类型局限于原始类型,字符串,枚举,注解或由这些类型组成的数组。

3、注解类型可以包含默认值,如上代码中的 default "no description";

4、注解可以包含以下四种元注解:

@Documented – 使用该注解的元素将会被javadoc或类似工具文档化,它应用于类型声明,类型声明的注解会影响客户端对注解元素的使用。如果一个类型声明添加了该注解,那么它的注解会成为被注解元素的公共API的一部分。

@Target – 表示支持的注解程序元素种类,可以是TYPE,METHOD,CONSTRUCTOR,FILED等等,如果不写该注解表示不限制,可以使用在任何程序类型上。

@Inherited – 表示一个注解类型会被自动继承,如果用户在类声明的时候查询注解类型,同时类声明中也没有这个类型的注解,那么注解类型会自动查询该类的父类,这个过程将会不停地重复,直到该类型的注解被找到为止,或是到达类结构的顶层(Object)。

@Retention – 表示注解类型保留时间长短,它接收RetentionPolicy参数,可能的值有SOURCE, CLASS, 以及RUNTIME。

入门实例:(参考网络)

定义注解:

import java.lang.annotation.*;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Name {
    String originate();
    String community();
}

注解使用:

@Description(value = "JavaEyer,is better")
public class JavaEyer {
    @Name(originate = "创始人:abc",community = "javaeye")
    public String getEyeName() {
        return null;
    }

    @Name(originate = "创始人:nba",community = "Americ")
    public String getSideName() {
        return "excuse me";
    }

}

测试类:

import com.sun.corba.se.impl.orbutil.concurrent.Sync;

import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

public class AnnotationTest {
    @SuppressWarnings("uncheked")
    public static void main(String[] args) {
        final String CLASS_NAME = "JavaEyer";
        try {
            Class test = Class.forName(CLASS_NAME);
            Method[] methods = test.getMethods();
            boolean flag = test.isAnnotationPresent(Description.class);
            if(flag){
                Description des = (Description)test.getAnnotation(Description.class);
                System.out.println("描述:"+des.value());
                System.out.println("----------------------------");
            }
            Set<Method> set = new HashSet<Method>();
            for(int i = 0;i<methods.length;i++){
                boolean otherflag = methods[i].isAnnotationPresent(Name.class);
                if(otherflag){
                    set.add(methods[i]);
                }
            }
            for(Method method:set){
                Name name = method.getAnnotation(Name.class);
                System.out.println(name.originate());
                System.out.println("创建的社区:"+ name.community());
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-10-05 17:41:15

java之自定义注解入门的相关文章

[2]注解(Annotation)-- 深入理解Java:注解(Annotation)自定义注解入门

转载 http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 深入理解Java:注解(Annotation)自定义注解入门 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.J

(转载)深入理解Java:注解(Annotation)自定义注解入门

深入理解Java:注解(Annotation)自定义注解入门 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email prote

Java:自定义注解(Annotation)

在网上找了很多资料也有写的比较好的,但是总有有一点半点的细节没有写出来,在这里自己总结下使用. 使用Java的自定义注解,首先个人需要了解下Java为我们提供的元注解和相关定义注解的语法.(这个我在网上选择了一篇详细的介绍链接在文章最底层) 1.首先自定义我们需要的注解 package com.plat; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lan

Java中自定义注解

前言 随着springboot的流行,以前基于XML的spring配置用的越来越少,JavaConfig形式使用的越来越多,类似于: @Configuration public class AppConfig { @Bean(name="helloBean") public HelloWorld helloWorld() { return new HelloWorldImpl(); } } 可以看出更多的是基于注解(Annotation)实现的,包括springboot的入口类**Ap

深入理解Java:注解(Annotation)自定义注解入门

引用: http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected

(转)深入理解Java:注解(Annotation)自定义注解入门

向作者致敬! 转自:http://www.cnblogs.com/peida/archive/2013/04/24/3036689.html 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email pro

【转】深入理解Java:注解(Annotation)自定义注解入门

要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email protected], [email protected] 这些类型和它

Java注解(Annotation)自定义注解入门

要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email protected], [email protected] 这些类型和它

深入理解Java的注解(Annotation):自定义注解入门(2)

要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义自己的注解之前,我们就必须要了解Java为我们提供的元注解和相关定义注解的语法. 元注解: 元注解的作用就是负责注解其他注解.Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明.Java5.0定义的元注解: [email protected], [email protected], [email protected], [email protected] 这些类型和它