@hainingwyx
2017-11-15T21:11:28.000000Z
字数 1402
阅读 1294
Java
注解概念:注解是一种这样的东西,标志是一个@符号,能够关联数据和其他的信息,注解是Java提供的一种源程序中的元素关联任何信息和任何元数据的途径和方法。
注解作用:读懂别人代码,特别是框架代码,让编程更加简洁,代码更清晰。
@Override 表示当前方法覆盖了父类的方法
@Deprecation 表示方法已经过时,方法上有横线,使用时会有警告。
@SuppviseWarnings 表示关闭一些警告信息(通知java编译器忽略特定的编译警告)
java注解分类
元注解:注解的注解
public @interface Description{ //使用@interface表示定义注解
String desc(); //成员以无参无异常方式声明
String author();
int age() default 19; //可以用default为成员指定一个默认值
}
@Target({ElementType.CONSTRUCTOR,ElementType.FIELD,ElementType.METHOD})
Target表示作用域。
+ ElementType可选:CONSTRUCTOR(构造方法)、FIELD(字段)、LOCAL_VARIABLE(局部变量)、METHOD(方法)、PACKAGE(包)、PARAMETER(参数)、TYPE(类,接口)
+ Retention表示声明周期,RetentionPolicy可选:SOURCE(源码显示,编译失效),CLASS(编译有效,运行无效),RUNTIME(运行有效,可用反射读取)
+ Inherited //Inherited 允许子类继承
+ @Documented 生成Javadoc会包含注解信息
使用注解的语法:@<注解名>(<成员名1>=<成员值1>,<成员名1>=<成员值1>,...)
@Description(desc="I am eyeColor",author="Mooc boy",age=18)
public String eyeColor(){ //@Description注解在eyeColor()方法上使用。
return "red";
}
解析注解
概念:通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑。
RetentionPolicy.RUNTIME
时,才能获取到注解,SOURCE
和CLASS
都获取不到注解。@Inherited
对implements
不起作用,对extends
起作用(只会继承类上面注解,而不会继承该类方法中的注解)。4、自定义注解的结构:
元注解(用来注解注解的)、@接口定义、无参无异常的成员方法的定义(成员类型受限:基本数据类型、String、枚举)