1、注解(annotation)
注解是从JDK5.0开始引入的。
- 注解(annontation)的作用
- 不是程序本身,可以对程序作出解释,对程序有检查和约束的功能
- 可以被其他程序读取(比如:编译器等)
- 注解(annontation)和注释(comment)的区别
- 注解:给程序员看的,编译器可以识别,具有一定的功能
- 注释:给程序员看,编译器无法识别
- 注解(annontation)的格式
- 注解的格式:
@注释名
- 有的可以添加一些参数值,比如:
@SuppressWarnings(value="unchecked")
- 注解的格式:
- 注解(annontation)的使用
- 注解可以附加在:packge、class、method、field等上面
2、内置注解
- @Override:定义在java.lang.Override中,此注释只能用于修饰方法,表示的是这个方法重写于父类中的方法
- @Deprecated:定义在java.lang.Deprecated中,此注释可以用于修饰方法、属性、类,表示不鼓励程序员使用这样的元素,通常是因为它很危险或者存在更好的选择(但是可以使用)
- @SuppressWarnings:定义在java.lang.SuppressWarnings中,用来镇压警告信息。这个注释需要添加一个参数才能使用,这些参数是已经定义好的,我们可以选择性使用。
- @SuppressWarnings(“all”)
- @SuppressWarnings(“unchecked”)
- @SuppressWarnings(value={“unchecked”,“deprecation”})
- 等等……
3、元注解
- 元注解的作用:
负责注解其他注解。java定义了四个标准的meta-annontation类型,用来对annontation类型进行说明。 - 在java.lang.annontation包中可以查找到这四个元注解
- @Target:用于描述注解的使用范围。
- @Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期。(源代码SOURCE<CLASS<运行RUNTIME)
- @Document:说明注解将被包含在javadoc中
- @Inherited:说明子类可以继承父类中的注解
4、自定义注解
- 使用@interface自定义注解时,自动继承了java.lang.annontation.Annontation接口
自定义注解的分析:- @interface用来声明一个注解,格式:
public @interface 注解名{
定义内容
}
- 其中的每一个方法实际上是声明了一个配置参数
- 方法的名称就是参数的名称
- 返回值类型就是参数的类型(返回值只能是基本类型,Class,String,enum)
- 可以通过default来声明参数的默认值
- 如果只有一个参数成员,一般参数名为value
- 注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@MyAnnontation(name ="小明")
public class Test2 {
@MyAnnontation(name ="小明")
public static void main(String[] args) {
}
}
@Target({ElementType.TYPE,ElementType.METHOD})//元注解:表明该注解的使用范围
@Retention(RetentionPolicy.RUNTIME)//元注解:描述注解的使用周期
@interface MyAnnontation{
String name(); //参数名称 格式:参数类型 参数名();
int age() default 0; //default 声明参数的默认值,
}