首页 > 编程 > Java > 正文

Java注解--Annotation

2019-11-08 01:02:49
字体:
来源:转载
供稿:网友

一:定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。

二:分类: 1)按照运行机制分为:源码注解,编译时注解,运行时注解 2)按照来源分为:JDK注解,第三方注解,自定义注解 3)元注解:注释的注释 三:具体注释 1.JDK注解 1)@Override表示当前的方法覆盖父类的方法 这里写图片描述 2)@DePRecated表示方法已经过时,方法上有横线,使用时会有警告 这里写图片描述 3)@SuppressWarning表示关闭一些警告信息 这里写图片描述 2.自定义注解

@Target({ElementType.METHOD, ElementType.TYPE}) //表示注解的作用域(元注解) @Retention(RetentionPolicy.RUNTIME) //生命周期(元注解)@Inherited //标识性元注解,允许子类继承@Documented //元注解,生成javadoc时会包含注解public @interface Description { String value(); int age() default 18; //可以使用default为成员指定默认值}

补充: (1)成员类型是受限的,合法的类型包括原始类型以及String、Class、Annotation、Enumeration (2)如果注解只有一个成员,并且把成员取名为value(),则在使用时可以忽略成员名和赋值号“=” (3)注解类可以没有成员,没有成员的注解称为标识注解 (4)作用域参数: ElemenetType.CONSTRUCTOR(构造方法声明) ElemenetType.FIELD(字段生声明) ElemenetType.LOCAL_VARIABLE(局部变量声明) ElemenetType.METHOD (方法声明) ElemenetType.PACKAGE (包声明) ElemenetType.PARAMETER (参数声明) ElemenetType.TYPE(类,接口声明) (5)生命周期参数: RetentionPolicy.SOURCE(只在源码显示,编译时会丢失) RetentionPolicy.CLASS(编译时会记录到class中,运行时忽略) RetentionPolicy.RUNTIME( 运行时存在) 3.使用注解的语法 @<注解名>(成员名=成员值,。。。) 4 .解析注释

public class ParseAnn { public static void main(String[] args) { try { //1使用类加载器加载类 Class child = Class.forName("com.ann.test.Child"); //2找到类上面的注解 boolean isExist = child.isAnnotationPresent(Description.class); if(isExist){ //3拿到注解实例 Description d = (Description)child.getAnnotation(Description.class); System.out.println(d.value()); } //4找到方法上的注解 Method[] ms = child.getMethods(); for (Method method : ms) { boolean isMExist = method.isAnnotationPresent(Description.class); if(isMExist){ Description d = (Description)method.getAnnotation(Description.class); System.out.println(d.value()); } } } catch (ClassNotFoundException e) { // TODO 自动生成的 catch 块 e.printStackTrace(); } }}

要解析的类和运行结果: 这里写图片描述 这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表