Java实例讲解注解的应用

目录
  • 1.注解的理解
  • 2.@Override
  • 3.@Deprecated
  • 4.@SuppressWarnings

1.注解的理解

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

2.@Override

package com.demo.annotation_;
/**
 * @author Demo龙
 * @version 1.0
 */
public class Override_ {
    public static void main(String[] args) {
    }
}
class Father{//父类
    public void fly(){
        int i = 0;
        System.out.println("Father fly...");
    }
    public void say(){}
}
class Son extends Father {//子类
    //1. @Override 注解放在fly方法上,表示子类的fly方法时重写了父类的fly
    //2. 这里如果没有写 @Override 还是重写了父类fly
    //3. 如果你写了@Override注解,编译器就会去检查该方法是否真的重写了父类的
    //   方法,如果的确重写了,则编译通过,如果没有构成重写,则编译错误
    //4. 看看 @Override的定义
    //   解读: 如果发现 @interface 表示一个 注解类
    /*
        @Target(ElementType.METHOD)
        @Retention(RetentionPolicy.SOURCE)
        public @interface Override {
        }
     */
    @Override   //说明
    public void fly() {
        System.out.println("Son fly....");
    }
    @Override
    public void say() {}
}

3.@Deprecated

package com.demo.annotation_;
/**
 * @author Demo龙
 * @version 1.0
 */
public class Deprecated_ {
    public static void main(String[] args) {
        A a = new A();
        a.hi();
        System.out.println(a.n1);
    }
}
//1. @Deprecated 修饰某个元素, 表示该元素已经过时
//2. 即不在推荐使用,但是仍然可以使用
//3. 查看 @Deprecated 注解类的源码
//4. 可以修饰方法,类,字段, 包, 参数  等等
//5. @Deprecated 可以做版本升级过渡使用
/*
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
 */
@Deprecated
class A {
    @Deprecated
    public int n1 = 10;
    @Deprecated
    public void hi(){
    }
}

4.@SuppressWarnings

package com.demo.annotation_;
import java.util.ArrayList;
import java.util.List;
/**
 * @author Demo龙
 * @version 1.0
 */
@SuppressWarnings({"rawtypes", "unchecked", "unused"})
public class SuppressWarnings_ {
    //1. 当我们不希望看到这些警告的时候,可以使用 SuppressWarnings注解来抑制警告信息
    //2. 在{""} 中,可以写入你希望抑制(不显示)警告信息
    //3. 可以指定的警告类型有
    //          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,抑制与未用的程式码及停用的程式码相关的警告
    //4. 关于SuppressWarnings 作用范围是和你放置的位置相关
    //   比如 @SuppressWarnings放置在 main方法,那么抑制警告的范围就是 main
    //   通常我们可以放置具体的语句, 方法, 类.
    //5.  看看 @SuppressWarnings 源码
    //(1) 放置的位置就是 TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE
    //(2) 该注解类有数组 String[] values() 设置一个数组比如 {"rawtypes", "unchecked", "unused"}
    /*
        @Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
            @Retention(RetentionPolicy.SOURCE)
            public @interface SuppressWarnings {
                String[] value();
        }
     */
    public static void main(String[] args) {
        List list = new ArrayList();
        list.add("jack");
        list.add("tom");
        list.add("mary");
        int i;
        System.out.println(list.get(1));
    }
    public void f1() {
//        @SuppressWarnings({"rawtypes"})
        List list = new ArrayList();
        list.add("jack");
        list.add("tom");
        list.add("mary");
//        @SuppressWarnings({"unused"})
        int i;
        System.out.println(list.get(1));
    }
}

到此这篇关于Java实例讲解注解的应用的文章就介绍到这了,更多相关Java注解内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java注解(annotation)简述

    目录 Java注解(annotation)简单上手 1.什么是注解? 2.java内置注解 3.注解的基本运 总结 Java注解(annotation)简单上手 反射reflect:https://www.jb51.net/article/221282.htm 1.什么是注解? 注解就像商场的商品上都贴有自己的标签一样,它提供了关于这个商品的许多额外信息.你可以根据这些信息对其进行附加的处理. "打上标签" 以后,框架就可以利用Java的反射能力,扫描.获取各Class/Method/

  • Java基础知识之注解、元注解

    目录 注解 注解作用 Java预定义的注解 自定义注解 元注解 实例: 注解使用总结 总结 注解 Java注解也称Java标注,是jdk1.5(5.0)后的新特征.Java语言中的类.方法.变量.参数和包等都可以被标注.和Javadoc不同,Java注解可以通过反射获取标注内容,在编译器生成类文件时,标注可以被嵌入到字节码中,Java虚拟机可以保留标注内容,在运行时可以获取到标注内容,当然它也支持自定义Java标注 功能:用于说明程序 用途:一般用在框架中使用 格式:@AnnotationNam

  • Java注解方式之防止重复请求

    目录 一. 前情提要 二.技术设计 2.1 库表设计 2.2 业务逻辑 2.3 代码编写 2.4 测试 2.5 问题所在 三.解决方案 四 .唠唠 4.1 项目 4.2 redis服务 4.3 其他问题 自定义注解方式防止前端同一时间多次重复提交 一. 前情提要 有这样一个业务,上课的时候老师给表现好的学生送小花花, 每节课都能统计出某个学生收到的花的总数. 按照产品需求,前端点击送花按钮后30秒内是不能再次送花的(信任的基础) (上课老师送花行为都进行统计了,可见互联网是多么可怕) 二.技术设

  • CSS的三大样式你了解多少

    目录 CSS样式 行内式 内部式 外部式 多重样式优先级 总结 CSS样式 行内式 又叫:内联样式.行内样式.嵌入式样式 <!-- style作为属性直接写在标签后面, style属性可以包含任何 CSS属性 --> <div style="font-size: 40px; color: #FF0000;">我是div</div> <div style="font-size: 40px; color: blue;">我

  • Java中的三种标准注解和四种元注解说明

    目录 Java的三种标准注解和四种元注解 先来说说什么是注解 Java内置了三种注解,定义在java.lang中的注解 Java除了内置了三种标准注解,还有四种元注解 元注解和自己写一个注解 一.元注解 二.自己写注解 Java的三种标准注解和四种元注解 先来说说什么是注解 注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便地使用这些数据. 注解的语法比较简单,除了@符号的使用之外,它基本与Java固有的语法一致. Java内置了三种注解,定义在

  • JAVA自定义注解详情

    目录 原理: 元注解: @Retention参数讲解: 案例: 给一个类的String属性设置默认值 总结 原理: 注解的本质是继承Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类.而我们通过反射获取注解时,返回的是Java运行时生成的动态代理对象Proxy1,通过动态代理对象,调用自定义注解(接口)的方法,最终会调用AnnotationInvocationHandler 的invoke方法. 元注解: @Documented:是否将注解包含到JavaDoc中 @Re

  • 一篇文章带你入门java注解

    目录 注解 什么是注解 内置注解 元注解 自定义注解 实例 总结 注解 什么是注解 Annotation是从JDK5.0开始引入的新技术 Annotation的作用: 1.不是程序本身,可以对程序做出解释(这一点和注释(comment)没什么区别) 2.可以被其他程序(比如:编译器等)读取 Annotation的格式: ​ 注解是以"@注释名"在代码中存在的,还可以添加一些参数值,例如: ​ @SuppressWarnings(value="unchecked")

  • Java注解Annotaton详解

    目录 1.三种基本的Annotaton @Override 解读 细节 @Deprecated 解读 效果 细节可以修饰方法,类,包,参数等等 @SuppressWarnings 解读 效果 细节 元注解 Retention Retention案例 Target Target的值 Target案例 Documented Documented案例 Inherited 1.三种基本的Annotaton @Override : 限定某个方法,是重写父类方法 , 该注解只能用于方法@Deprecated

  • java基础之注解示例详解

    目录 定义 作用 注解与注释的区别 JDK内置的标准注解 自定义注解 @Target 属性 定义 注解也叫原数据,它是JDK1.5及之后版本引入的一个特性,它可以声明在类.方法.变量等前面,用来对这些元素进行说明. 作用 生成文档:通过代码里标识的注解生成doc文档[生成doc文档] 代码分析:通过代码里标识的注解对代码进行分析[反射] 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查[Override] 注解与注释的区别 注解是给编译器看的,注释是给程序员看的. JDK内置的标准注

  • Java 如何通过注解实现接口输出时数据脱敏

    目录 Java注解实现接口输出数据脱敏 先声明了一个注解 我们目前只支持对手机号 然后我们需要实现注解的拦截功能 我对默认声明和脱敏名称和手机号进行了测试 Java注解的字段脱敏处理 定义需要脱敏的字段规则 声明注解 测试 Java注解实现接口输出数据脱敏 在后台管理中,对于手机号,身份证,姓名这些数据不允许所有人都能看,这时候我们要对相对数据进行脱敏. 先声明了一个注解 通过对相关接口函数进行声明,以及配置需要脱敏的参数类型SecretTypeEnum,默认脱敏手机号 /** * 脱敏声明 *

随机推荐