取得Annotation

        在Java中见过Annotation,Servlet也见到过Annotation,它最大的好处:节约了代码代码检查的时间,节约了配置文件的编写.

尤其是在Servlet配置的过程里面,利用Annotation可以解决配置文件过多的问题.

取得配置的Annotation

        如果要想操作Annotation,那么首先必须清除去和取得配置的Annotation.要想取得所有在类中或方法上配置的Annotation可以在Class类中找到如下的方法:

            取得类上配置的全部Annotation:

public Annotation[] getAnnotations()
            取得一个Annotation:
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)

范例:取得类上配置的Annotation

import java.io.Serializable;
@SuppressWarnings("serial")
@Deprecated
public class Emp implements Serializable{
	
}

此时的确是两个Annitation配置在了Emp类上面

范例:通过Class类取得配置的Annotation

import java.io.Serializable;
@SuppressWarnings("serial")
@Deprecated
public class Emp implements Serializable{
	
}

import java.lang.annotation.Annotation;

public class Dome7 {
	public static void main(String[] args) throws ClassNotFoundException {
		Class<?> cls=Class.forName("cn.zwb.dome1.Emp");
		Annotation an[]= cls.getAnnotations();
		for (int i = 0; i < an.length; i++) {
			System.out.println(an[i]);
		}
	}
} 

结果:@java.lang.Deprecated()

    这个程序只是针对于类上定义Annotation操作,而实际上方法上才会经常出现Annotation,而在

"java.lang.reflect.AccessibleObject"类(Constructor.Method.Field三个类的父类)中定义了取得Annotation的操作方法;

范例:取得方法上定义的Annotation

import java.io.Serializable;
@SuppressWarnings("serial")
public class Emp implements Serializable{
	@Deprecated
	@Override
	public String toString() {
		// TODO 自动生成的方法存根
		return "hello";
	}
}

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public class Dome7 {
	public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException {
		Class<?> cls=Class.forName("cn.zwb.dome1.Emp");
		Method met=cls.getMethod("toString");
		Annotation an[]= met.getAnnotations();
		for (int i = 0; i < an.length; i++) {
			System.out.println(an[i]);
		}
	}
}

结果:@java.lang.Deprecated()

有些Annotation无法取得.

猜你喜欢

转载自blog.csdn.net/qq1019648709/article/details/79949519