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

本文介绍了Java中的注解,如@Overridden、@Deprecated和@SuppressWarnings,并讲解了如何通过反射来获取注解信息。注解可以应用于类、属性、方法等多个层面,而定义注解使用@interface关键字。通过反射,可以读取类、方法等上面的注解详情。


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
		 */

	}

}



 

 

 

 


 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值