栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java基础——注解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java基础——注解

注解
    注解(Annotation)也被称为元数据(metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息。和注释一样,注解不影响程序逻辑,但注解可以被编辑或运行,相当于嵌入在代码中的补充信息。在JavaSE中,注解的目的比较简单,比如标记过时的功能,忽略警告等。在JavaEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替javaEE旧版中所留下的繁冗代码和xml配置等。
基本的注解

使用Annotation时要在前面增加@符号,并把该Annotation当成一个修饰符使用,用于修饰它支持的程序元素。

三个基本的Annotation:

    @Override:限定某个方法,是重写父类方法,该注解只能用于方法。@Deprecated:用于表示某个程序元素(类,方法)已经过时。@SuppressWarnings:抑制编译器警告
@Override注解

@Override:限定某个方法,是重写父类方法,该注解只能用于方法。

class Father{
    public void fly() {
        System.out.println("父类方法");
    }
}
class Son extends Father{
    @Override
    public void fly() {
        System.out.println("子类重写父类方法");
    }
}

注意:

    @Override表示指定重写父类的方法(从编译层面验证),如果父类没有该方法(这里是fly方法),则会报错。如果不写@Override注解,而父类任有该方法(public void fly(){}),仍然构成方法重写。@Override只能修饰方法,不能修饰其他类,包,属性等。@Override注解源码中@Target(ElementType.METHOD),说明该注解只能修饰方法。@Target 是修饰注解的注解,称为元注解。
class Father{//父类
    public void fly() {
        System.out.println("父类方法");
    }
}
class Son extends Father{//子类继承父类
    //1.@Override注解放在fly()方法上面,表示子类的fly方法是重写的父类的fly方法。
    //2.实际上即便没有@Override注解,这里还是重写了父类方法
    //3.但是写了@Override注解,编译器会先检查该方法是否真的重写了父类方法,
    //如果是则编译通过,不是则编译错误。
    @Override
    public void fly() {
        System.out.println("子类重写父类方法");
    }
}

@override注解源码:


package java.lang;

import java.lang.annotation.*;


@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
@Deprecated注解
    @Deprecated:用于表示某个程序元素(类,方法)已过时。可以用来修饰方法、类、字段、包、参数等等 @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE}) @Deprecated可以做到新旧版本的兼容和过度。
//1.@Deprecated修饰某个元素,表示该元素已经过时。
//2.过时不代表不能使用,只是不再推荐使用而已,还是可以使用的。
@Deprecated
class Clid{
    @Deprecated
    public int a=0;
    @Deprecated
    public void fly(){}
    public void say(){}
}

在结构中可以看出,被@Deprecated注解的元素会被一条横线贯穿。

 @SuppressWarnings注解

@SuppressWarnings:抑制编译器警告。

注:这些黄色的就是警告⚠。加上注解后就会抑制警告。

 

    当我们不希望看到这些警告的时候,可以使用 SuppressWarnings 注解来抑制警告信息 在{""} 中,可以写入你希望抑制(不显示)警告信息 SuppressWarnings 作用范围是和你放置的位置相关,通常我们可以放置具体的语句。 可以指定的警告类型有
警告类型作用
all 抑制所有警告
boxing 抑制与封装 / 拆装作业相关的警告
cast 抑制与强制转型作业相关的警告
dep-ann 抑制与淘汰注释相关的警告
deprecation 抑制与淘汰的相关警告
fallthrough 抑制与 switch 陈述式中遗漏 break 相关的警告
finally 抑制与未传回 finally 区块相关的警告
hiding 抑制与隐藏变数的区域变数相关的警告
incomplete-switch 抑制与 switch 陈述式 (enum case) 中遗漏项目相关的警告
javadoc 抑制与 javadoc 相关的警告
nls 抑制与非 nls 字串文字相关的警告
null 抑制与空值分析相关的警告
rawtypes 抑制与使用 raw 类型相关的警告
resource 抑制与使用 Closeable 类型的资源相关的警告
restriction 抑制与使用不建议或禁止参照相关的警告
serial 抑制与可序列化的类别遗漏 serialVersionUID 栏位相关的警告
static-access 抑制与静态存取不正确相关的警告
static-method 抑制与可能宣告为 static 的方法相关的警告
super 抑制与置换方法相关但不含 super 呼叫的警告
synthetic-access 抑制与内部类别的存取未最佳化相关的警告
sync-override 抑制因为置换同步方法而遗漏同步化的警告
unchecked 抑制与未检查的作业相关的警告
unqualified-field-access 抑制与栏位存取不合格相关的警告
unused 抑制与未用的程式码及停用的程式码相关的警告
元注解

JDK的元注解用于修饰其他的注解

元注解:本身作用不大

    Retention :指定注解的作用范围,三种SOURCE、CLASS、RUNTIME。Target:指定注解可以在那些地方使用。documented:指定该注解是否会在javadoc体现。Inherited:子类会继承父类注解。
@Retention 注解

说明:

只能用于修饰一个 Annotation 定义 , 用于指定该 Annotation 可以保留多长时间 , @Rentention 包含一个 RetentionPolicy 类型的成员变量, 使用 @Rentention 时必须为该 value 成员变量指定值 : @Retention 的三种值
     RetentionPolicy.SOURCE: 编译器使用后,直接丢弃这种策略的注释  RetentionPolicy.CLASS: 编译器将把注解记录在 class 文件中. 当运行 Java 程序时, JVM 不会保留注解。 这是默认值。 RetentionPolicy.RUNTIME: 编译器将把注解记录在 class 文件中 . 当运行 Java 程序时 , JVM 会保留注解 . 程序可以通过反射获取该注解。
@Target注解

用于修饰注解定义,用于指定被修饰的注解能用于修饰哪些程序元素。@Target也包含了一个名为value的成员变量。

@documented注解

@documented:用于指定该注解修饰的注解类将被javadoc工具提取成文档,即在生成文档时可以看到该注解。

说明:定义在@documented的注解必须设置@Retention值为RUNTIME。

@Inherited注解

被它修饰的注解将具有继承性。如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749041.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号