java自学笔记————通过反射来获取注解的信息;


Java中的觉注解:

    @Overrid:作用在方法上的注解。当方法不是重写父类的方法时会报错;

    @Deprecated:作用在方法上。标记该方法为作废方法(已过时);

    @SuppressWarnings:作用在方法上,压制警告

定义注解类不能使用class、enum,也不能使用interface,而是使用 @interface。
public @interface MyAnn{}
使用注解目标:
  注解可以作用在:类(接口或枚举)、属性、方法、构造器、包、参数、局部变量

 

注解实例:


import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//注解保留到运行时 保留到运行时,如果不设置为保留到运行时,那么就无法反射出来
@Retention(RetentionPolicy.RUNTIME)
//注解可以作用在类或方法上
@Target({ElementType.TYPE, ElementType.METHOD})
 public @interface MyAnn {
 String name() default "党学义";
 int age() default 23;
}

获取该类上的注解信息:


import java.lang.reflect.Method;

@MyAnn(name = "黑马程序员", age = 12)
class MyClass {

	private int a;

	@MyAnn(age = 100)
	public void method() {

	}
}

public class AnnTest {

	public static void main(String[] args) throws ClassNotFoundException,
			SecurityException, NoSuchMethodException {
		//获取到该类的字节码文件
		Class clazz = Class.forName("com.itheima.ann.MyClass");
        //获取该类上的注解
		MyAnn myann = (MyAnn) clazz.getAnnotation(MyAnn.class);
		System.out.println(myann.name());
		System.out.println(myann.age());

		/*
		 * 黑马程序员
		 *  12
		 */
		
		//MyClass中的  获取method方法
		Method method = clazz.getMethod("method", null);
         //获取该方法上的注解
		MyAnn myann2 = method.getAnnotation(MyAnn.class);
		//注解上的name属性
		System.out.println(myann2.name());
		//注解上的age属性
		System.out.println(myann2.age());
		/*
		 * 党学义
		 *  100
		 */

	}

}



 

 

 

 


 

 

 

 

你可能感兴趣的:(java自学笔记————通过反射来获取注解的信息;)