javaJDK自带注解

JDK自带注解

1.@Override

2.@Deprecated

3.@Suppvisewarnings

@Override注解的作用

@Override注解仅作用在方法上,被标识方法表示重写父类的方法,用这个注解可以避免方法名跟参数写错。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

这是@Override的代码源码,上面@Target表示该注解的作用域,该注解的作用域是==ElementType.METHOD==表示作用在方法上。另外它还拥有一个@Retention,这也是java里面一个自带的注解。

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
    /**
     * Returns the retention policy.
     * @return the retention policy
     */
    RetentionPolicy value();
}

在@Retention注解的源码里可以清晰地看到他的作用域是在注解上面标识,@Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。

它里面内置了一个枚举的类,进这个类里面看看。

public enum RetentionPolicy {
    /**
     * Annotations are to be discarded by the compiler.
     */
    SOURCE,

    /**
     * Annotations are to be recorded in the class file by the compiler
     * but need not be retained by the VM at run time.  This is the default
     * behavior.
     */
    CLASS,

    /**
     * Annotations are to be recorded in the class file by the compiler and
     * retained by the VM at run time, so they may be read reflectively.
     *
     * @see java.lang.reflect.AnnotatedElement
     */
    RUNTIME
}

在这个类里面可以清晰地看到,有三种枚举类型。

SOURCE :被编译器忽略

CLASS :注解将会被保留在Class文件中,但在运行时并不会被VM保留。这是默认行为,所有没有用Retention注解的注解,都会采用这种策略。

RUNTIME :保留至运行时。所以我们可以通过反射去获取注解信息。

然后我们在回过头来看@Override,它里面的源码注解就表示,在生成class文件的时候后是被编译器所忽略的,仅作为一个标识性注解。

@Deprecated注解的作用

意思是说此方法已过时,过时的原因就是有新的API的类替代了次方法。
这个被划去的方法仍然是可以正常使用的,就是一个提示而已。
下面来写一个示例来看一下这个注解有什么作用。

public interface Person {

    @Deprecated
    String speak();
}

image
在图片中可以看到,调用的方法上面已经出现了一个下划线,这就是标识这个方法已经过时,但是这是一个提示你的注解,在编译时对代码并没有影响。

@SuppressWarnings注解的作用

J2SE 提供的最后一个批注是@SuppressWarnings。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。@SuppressWarnings。批注允许您选择性地取消特定代码段(即,类或方法)中的警告。其中的想法是当您看到警告时,您将调查它,如果您确定它不是问题,您就可以添加一个@SuppressWarnings批注,以使您不会再看到警告。虽然它听起来似乎会屏蔽潜在的错误,但实际上它将提高代码安全性,因为它将防止
您对警告无动于衷 — 您看到的每一个警告都将值得注意。
[以下是摘抄csdn的文章]
(https://blog.csdn.net/hunhun1122/article/details/72356228)

通过 @SuppressWarnings 的源码可知,其注解目标为类、字段、函数、函数入参、构造函数和函数的局部变量。
image

通过代码可以看到,通过在方法上面注解@SuppressWarnings(value=”deprecation”)警告的横线就取消了。
以下是注解内部的一些参数及其定义。

关键字用途
all抑制所有警告
boxing抑制装箱、拆箱操作时候的警告
cast抑制映射相关的警告
dep-ann抑制启用注释的警告
deprecation抑制过期方法警告
fallthrough抑制finally模块没有返回的警告
finally抑制finally模块没有返回的警告
null忽略对null的操作

还有很多,详细的请查看API文档。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值