内置注解、元注解以及如何自定义注解

什么是注解(Annotation )

从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。
Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。

三个内置注解

@Override 重写

声明该方法是重写父类的方法,在子类中重写父类或接口的方法,@Overide并不是必须的,但建议加上,可以在变更了代码情况下提示错误

@Override
public String toString() {
    return super.toString();
}
@Deprecated 过时

用于声明过时的类、方法、成员变量等,不影响该类使用,但不建议使用,因为已经出现了该方法的替代者或者该方法可能会不安全

public class Test{
	public static void main(String[] args) {
	 Test test = new Test();
	    test.add();
	}
	
	@Deprecated
	public void add(){
	    System.out.println("已经过时的方法");
	}
}
@SuppressWarning 抑制警告

它可以达到抑制编译器编译时产生警告的目的,但不建议使用,开发人员看不到该类的警告对以后的调优会有影响
需要一个参数:需要镇压的警告,例如unchecked或者镇压所有的all等等

元注解

元注解是用在注解上的注解

@Target 目标范围

用于描述注解可以用在什么地方
该注解需要一个参数ElementType

TYPE :类,接口,包括注解、枚举类
FIELD :字段,包括常量
METHOD : 方法
PARAMETER :参数
CONSTRUCTOR :构造器
LOCAL_VARIABLE :局部变量
ANNOTATION_TYPE : 注解
PACKAGE:包
TYPE_PARAMETER : 1.8新增,类型参数
TYPE_USE: 1.8新增,能标注任何类型
//声明一个可以在类和方法上使用的注解
@Target(value = {ElementType.TYPE,ElementType.METHOD})
public @interface t1 {

}
@Retention 保留期

用于描述注解存活的时间,即保留该注解信息到什么阶段,也是注解的生命周期,一般情况都声明为RUNTIME
该注解需要一个参数RetentionPolicy

SOURCE 源代码阶段
CLASS 到编译阶段
RUNTIME 到运行阶段
@Retention(RetentionPolicy.RUNTIME)
public @interface t1 {
    
}
@Inherited 继承

标明注解是能被继承的,子类可以继承父类的该注解

@Documented 文档

说明将注解中的元素包含到Javadoc中


自定义注解

定义一个可以用在类和方法上,能保留到运行阶段,且可以被子类继承的注解

@Target(value = {ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface t1 {

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值