当前位置:编程学习 > JAVA >>

java自定义注解接口

java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。
注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。包含在 java.lang.annotation 包中。
1、元注解
元注解是指注解的注解。包括  @Retention @Target @Document @Inherited四种。
1.1、@Retention: 定义注解的保留策略
Java代码
@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含 
@Retention(RetentionPolicy.CLASS)  //默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得, 
@Retention(RetentionPolicy.RUNTIME)//注解会在class字节码文件中存在,在运行时可以通过反射获取到 
1.2、@Target:定义注解的作用目标
Java代码
@Target(ElementType.TYPE)   //接口、类、枚举、注解 
@Target(ElementType.FIELD) //字段、枚举的常量 
@Target(ElementType.METHOD) //方法 
@Target(ElementType.PARAMETER) //方法参数 
@Target(ElementType.CONSTRUCTOR)  //构造函数 
@Target(ElementType.LOCAL_VARIABLE)//局部变量 
@Target(ElementType.ANNOTATION_TYPE)//注解 
@Target(ElementType.PACKAGE) ///包 
elementType 可以有多个,一个注解可以为类的,方法的,字段的等等
1.3、@Document:说明该注解将被包含在javadoc中
1.4、@Inherited:说明子类可以继承父类中的该注解
下面是自定义注解的一个例子
2、注解的自定义
Java代码 www.zzzyk.com
@Retention(RetentionPolicy.RUNTIME) 
@Target(ElementType.METHOD) 
public @interface HelloWorld { 
    public String name() default ""; 

3、注解的使用,测试类
Java代码
public class SayHello { 
     
    @HelloWorld(name = " 小明 ") 
    public void sayHello(String name) { 
        System.out.println(name + "say hello world!"); 
    }//www.heatpress123.net

4、解析注解
   java的反射机制可以帮助,得到注解,代码如下:
Java代码
public class AnnTest { 
public void parseMethod(Class<?> clazz) { 
        Object obj; 
       try { 
            // 通过默认构造方法创建一个新的对象 
            obj = clazz.getConstructor(new Class[] {}).newInstance( 
                    new Object[] {}); 
            for (Method method : clazz.getDeclaredMethods()) { 
                HelloWorld say = method.getAnnotation(HelloWorld.class); 
                String name = ""; 
                if (say != null) { 
                    name = say.name(); 
                    System.out.println(name); 
                    method.invoke(obj, name); 
                } 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
    } 
    public static void main(String[] args) { 
        AnnTest t = new AnnTest(); 
        t.parseMethod(SayHello.class); 
    } 
补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,