`

java学习之annotation注解学习一

 
阅读更多
注解相当于一门标记语言,在程序中加入注解等于为程序打上某种标记,没加标示没有这种标记,以后javac编辑器,开发工具和其他程序可以利用反射来了解你的类和各种元素上有无任何标记,看你有什么标记就去做相应的事,标记可以加在包,类,方法,字段,方法的参数以及局部变量上

参考
http://www.cnblogs.com/linjiqin/archive/2011/02/16/1956426.html
学习时候写的demo

java中有四种元注解,专门注解其他的注解,分别如下:
1.@Retention元注解 表示需要在什么级别保留该注解信息,也就是生命周期.可选的
  RetentionPoicy参数有:
  //RetentionPolicy.SOURCE: 停留在java源文件,被编译器丢掉
  //RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)
  /RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息


2.@Target元注解,默认值为任何元素,表示该注解用于什么地方。
  可用的ElementType参数包括:
  //ElementType.CONSTRUCTOR: 构造器声明
  //ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
  //ElementType.LOCAL_VARIABLE: 局部变量声明
  //ElementType.METHOD方法声明
  //ElementType.PACKAGE包声明
  //ElementType.PARAMETER参数声明
  //ElementType.TYPE类,接口或者enum声明

3.@Documented将注解包含在JavaDoc中

4.@Inheried允许子类继承父类中的注解

下面是我写的一个简单例子:
package test.annotations;

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

import test.enums.Gender;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD,ElementType.TYPE})
public @interface MyAnnotation {
	//为注解添加属性
	String color();
	//为属性添加默认值
	String value() default "我是注解";
	//
	int[] array() default {1,2,3,4};
	
	//添加一个枚举类型
	Gender gender() default Gender.MAN;
	
	//添加一个注解类型
	MetaAnnotation metaAnnotation() default @MetaAnnotation(brithday="2014年5-5");
}


//简单的注解
package test.annotations;

public @interface MetaAnnotation {
	String brithday();
}

//简单的枚举
package test.enums;

public enum Gender {
	MAN{
		public String getName(){
			return "男";
		}
	},
	WOMEN{
		public String getName(){
			return "女";
		}	
	};
	public abstract String getName();
}


最后写一个测试类来测试:
package test.app;

import test.annotations.MetaAnnotation;
import test.annotations.MyAnnotation;
import test.enums.Gender;

//调用注解并赋值
@MyAnnotation(color="red",array={1,2,3},gender=Gender.MAN,metaAnnotation=@MetaAnnotation(brithday="2014年5-5"))
public class AnnotationApp {
	public static void main(String[] args){
		//检查AnnotationApp类是否有MyAnnotation注解
		if(AnnotationApp.class.isAnnotationPresent(MyAnnotation.class)){
			//若存在就获取注解
			MyAnnotation myAnnotation = AnnotationApp.class.getAnnotation(MyAnnotation.class);
			System.out.println(myAnnotation);
			//获得注解的属性
			int[] arrs = myAnnotation.array();
			for(int arr:arrs){
				System.out.println(arr);
			}
			System.out.println(myAnnotation.color());
			System.out.println(myAnnotation.gender());
			//获取注解的注解属性
			MetaAnnotation metaAnno = myAnnotation.metaAnnotation();
			System.out.println(metaAnno.brithday());
			
			System.out.println(myAnnotation.value());
		}
	}
}


结果如下:

  • 大小: 11.3 KB
分享到:
评论

相关推荐

    Java Annotation注解技术

    Java Annotation注解技术是自Java SE 5.0版本引入的一种元编程机制,它允许程序员在源代码的各个层面(如类、方法、变量等)添加元数据,以供编译器、JVM或第三方工具在编译时或运行时进行处理。Annotation简化了...

    Java自定义注解Annotation的使用

    ### Java自定义注解Annotation的使用 #### 1. 前言 自从JDK 1.5引入了注解这一特性以来,它已经成为Java开发中的一个重要组成部分。注解最初是为了推动EJB 3.0的普及和发展而设计的,其目的是减少配置文件的使用,...

    Java.Annotation注解.part4

    Java.Annotation注解.part4

    Java.Annotation注解.part1

    Java.Annotation注解.part1

    Java Annotation注解.doc

    Java Annotation,也称为注解,是Java编程语言中的一种元数据机制,用于向编译器、JVM或工具提供有关代码的附加信息。这些信息不直接影响代码的执行,但可以被编译器或运行时环境用来执行特定的操作,如代码分析、...

    Java.Annotation注解.part3

    Java.Annotation注解.part3

    Java.Annotation注解.part2

    Java.Annotation注解.part2

    spring的Annotation注解.

    ### Spring框架中的Annotation注解详解 #### 一、Spring与Annotation的基本概念 Spring框架通过引入Annotation,极大地简化了Java开发中的依赖注入(Dependency Injection, DI)和面向切面编程(AOP)的过程。...

    Java 注解(Annotation)

    Java 注解(Annotation) - 请认准 ih0qtq

    Struts2之Annotation注解配置使用案例struts013

    在Struts2中,Annotation注解的引入为开发者提供了更加灵活和便捷的配置方式,使得无需在XML配置文件中进行繁琐的设置,可以直接在类或方法上通过注解来进行配置。本文将深入探讨Struts2中的Annotation配置,以及...

    Java Annotation(Java 注解)

    如果你想知道java annotation是什么?你可以看看

    基于Java的MVC架构Annotation注解实现源码分析

    该项目的核心是基于Java语言实现的MVC架构,采用Annotation注解技术进行实现。项目源码由69个文件组成,涵盖24个类文件、23个Java源文件、7个JSP页面文件、3个XML配置文件以及少量其他类型文件。该项目是jeecg第16期...

    Java 5 annotation 学习笔记

    Java 5引入的注解(Annotation)是一种元数据,它提供了在代码中嵌入信息的方式,这些信息可以被编译器、JVM或其他工具在编译时或运行时使用。注解可以用来简化代码,提高可维护性,并帮助工具进行静态分析。 1. ...

    JAVA注解(Annotation).doc

    - 同一类型的注解在同一域中只能注解一次。 - 注解不能被继承,除非使用`@Inherited`元注解。 在实际编程中,通过自定义注解,开发者可以创建出符合特定需求的元数据,这在框架开发、配置管理、代码分析等方面...

    JAVA Annotation学习

    通过上述示例中的JavaAnnotation压缩包,你可能包含了注解的使用示例、源码以及相关的博客文章。源码可以帮助你理解注解的实际应用,而博客文章可能深入解释了注解的工作原理和最佳实践。学习这些材料,将有助于你...

    java之Annotation及其应用

    Java注解(Annotation)是Java语言的一个重要特性,它为元数据提供了强大的支持。元数据是一种描述数据的数据,可以提供有关代码的附加信息,而这些信息并不直接影响代码的执行。在Java中,注解用于向编译器、JVM或...

    Annotation注解的介绍和使用

    ### Annotation注解的深入解析与应用 #### 一、Annotation概览 ##### 1.1 何为元数据 元数据,在计算机科学中,是指用于描述数据的数据,它提供了关于数据本身的附加信息,有助于理解、解释和管理数据。在编程...

    Java基础复习笔记12Java自定义注解Annotation的使用

    Java自定义注解(Annotation)是Java编程语言中的一个重要特性,自JDK1.5引入以来,它极大地简化了代码的管理和维护。注解提供了一种元数据的方式,允许程序员在源代码中嵌入额外的信息,这些信息可以被编译器、...

    java 注解annotation的使用以及反射如何获取注解

    Java注解(Annotation)是Java语言提供的一种元数据机制,用于向编译器或JVM提供额外的信息。这些信息可以用来验证代码、控制代码生成、配置应用等。注解是自Java 5版本引入的特性,它使得程序员可以在源代码中嵌入...

Global site tag (gtag.js) - Google Analytics