Java-测试

Java标准注解

@Override : 检测被注解的方法是否是是继承父类(接口)的
@Deprecated : 该注解的内容,表示已过时
@SuppressWarnings :关闭不当的编译器警告信息 压制警告

自定义注解

格式
元注解
		public @interface 注解名称{
		属性列表
		}

本质:注解本质就是一个接口,该接口默认继承Annotation接口
属性:接口中可以调用的成员方法
要求:

  1. 返回值类型
    基本数据类型
    String
    枚举
    注解
    以上类型的数组
  2. 定义了属性,在使用时要给属性赋值,不赋值的话可以在方法后加default 给属性 默认初始化值
    如果只有一个属性需要赋值,并且属性名是value,则value可以省略,直接写值
    数组赋值时,值用{}大括号包裹,如果数组中只有有个值时,{}可以省略
元注解

注解的注解
Java有四个元注解 @Retention @Target @Document @Inherited;

1.@Retention: 描述注解保留的阶段

  • @Retention(RetentionPolicy.RUNTIME):当前注解会保存到class字节码文件上,并被jvm读取到

2.@Target : 描述注解能够作用的位置

  • @Target(ElementType.ANNOTATION_TYPE)
  • TYPE:可以作用于类上
  • METHOD:可以作用于方法上
  • FIELD:可以作用于成员变量上

3.@Documented :描述注解是否被抽取到api文档中

4.@Inherited: 表示子类可以继承父类中的该注解(该注解是注解于父类)

注解修饰元素

RetentionPolicy:指的是注解的保留程度。

  • @Retention(RetentionPolicy.SOURCE) 注解仅存在于源码中,在class字节码文件中不包含
  • @Retention(RetentionPolicy.CLASS) 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
  • @Retention(RetentionPolicy.RUNTIME) 注解会在class字节码文件中存在,在运行时可以通过反射获

ElementType:指的是注解的作用目标。

  • @Target(ElementType.TYPE) 接口、类、枚举、注解
  • @Target(ElementType.FIELD) 字段、枚举的常量
  • @Target(ElementType.METHOD) 方法
  • @Target(ElementType.PARAMETER) 方法参数
  • @Target(ElementType.CONSTRUCTOR) 构造函数
  • @Target(ElementType.LOCAL_VARIABLE) 局部变量
  • @Target(ElementType.ANNOTATION_TYPE) 注解
  • @Target(ElementType.PACKAGE)
获取注解值定义的属性值
  1. 获取注解定义位置的对象
  2. 获取指定的注解
    getAnnotation(Class)
  3. 调用注解中的抽象方法获取配置的属性值

注解pro

@Target(value= {ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface pro {
	String  className();
	String  methodName();
	
}
	

获取属性值

@pro(className = "测试.Demo1",methodName = "show")
public class Test {
	public static void main(String [] args) {
	//获取该类的字节码对象
	Class<Test> testclass = Test.class;
	//获取注解对象
	pro an=testclass.getAnnotation(pro.class);//其实就是在内存中生成了一个该注解接口的子类对象
	//调用注解对象中定义的抽象方法,获取返回值
	String className =an.className();
	String methodName =an.methodName();
	System.out.println(className);
	System.out.println(methodName);
}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值