`
elite20130514
  • 浏览: 45153 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

注解入门

阅读更多

注解网络原语:

1、注解相当于一种标记,可以通过反射获得,可以给包,类,方法,变量等加注解,jdk中提供的最基本的注解 是 Annotation
2、Deprecated 用 @Deprecated 注释的程序元素,不鼓励程序员使用这样的元素,通常是因为它很危险或存在更好的选择。
   在使用不被赞成的程序元素或在不被赞成的代码中执行重写时,编译器会发出警告。
3、Override 表示一个方法声明打算重写超类中的另一个方法声明。如果方法利用此注释类型进行注解但没有重写超类方法,
   则编译器会生成一条错误消息。 
4、SuppressWarnings指示应该在注释元素(以及包含在该注释元素中的所有程序元素)中取消显示指定的编译器警告。

注解的定义与反射调用

注解定义:

package annotation;

public @interface MetaAnnotation {
	String value();
}

 

枚举:

package annotation;

public class EnumTest {
	public enum TrafficLamp {RED,YELLOW,GREEN};
}

 

自定义注解:

package annotation;

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

@Retention(RetentionPolicy.RUNTIME)	//保留到运行时,可通过反射获取
@Target(value={ElementType.TYPE,ElementType.METHOD})	//注解有效dest
public @interface CustomedAnnotation {
	//为注解增加各种属性
	int[] arrayAttr() default{3,2,4};		//数组类型的属性
	EnumTest.TrafficLamp lamp();			//枚举类型
    MetaAnnotation annotationArrt() default @MetaAnnotation("xxx");	//	注解类型的属性

}

 

 测试注解:

package annotation;

import java.util.Arrays;

@CustomedAnnotation(lamp=EnumTest.TrafficLamp.GREEN,annotationArrt=@MetaAnnotation("xxx"),arrayAttr=1)
public class AnnotationTest {

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		if(AnnotationTest.class.isAnnotationPresent(CustomedAnnotation.class)) {	//判断是否存在 ca字节码
			CustomedAnnotation cusAnn = 
				AnnotationTest.class.getAnnotation(CustomedAnnotation.class);	//获得注解对象 反射
			System.out.println(cusAnn);
			System.out.println(cusAnn.arrayAttr().getClass().getName());
			System.out.println(Arrays.asList(cusAnn.arrayAttr()));
			System.out.println(cusAnn.lamp());
			System.out.println(cusAnn.annotationArrt().annotationType());
		}
	
	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics