Java实例讲解注解的应用

作者:Demo龙 时间:2021-11-02 01:43:14 

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));
   }
}

来源:https://zal321.blog.csdn.net/article/details/124951936

标签:Java,注解
0
投稿

猜你喜欢

  • 简单实现Android读取网络图片到本地

    2021-12-20 04:31:05
  • 详解Java如何创建Annotation

    2023-05-05 22:40:41
  • C# 字符串、数组和List的截取和转换实例

    2022-12-16 23:06:38
  • Android 两个Fragment之间传递数据实例详解

    2022-06-23 19:30:09
  • 详解java模板和回调机制

    2023-08-13 15:33:46
  • Java之Algorithm_analysis案例详解

    2022-03-07 01:34:50
  • MyBatis中一对多的xml配置方式(嵌套查询/嵌套结果)

    2023-11-16 16:34:23
  • SpringBoot整合Thymeleaf小项目及详细流程

    2021-08-13 16:32:08
  • C# WebApi 路由机制剖析

    2022-01-23 05:20:16
  • Java爬取网站源代码和链接代码实例

    2023-06-25 01:11:29
  • Springboot 使用maven release插件执行版本管理及打包操作

    2023-07-12 01:20:35
  • Android 自定义输入支付密码的软键盘实例代码

    2021-08-09 11:41:43
  • 配置springboot项目使用外部tomcat过程解析

    2021-11-22 22:34:25
  • Android实现自定义曲线图

    2023-08-22 07:05:01
  • 新手学习微服务SpringCloud项目架构搭建方法

    2022-01-29 04:00:17
  • Java类和成员上的一些方法实例代码

    2022-03-15 10:47:31
  • 详细讲解Java的泛型

    2021-07-06 02:31:24
  • Java基本数据类型(动力节点java学院整理)

    2022-09-26 12:14:13
  • Spring计时器StopWatch使用示例

    2023-05-16 21:23:02
  • 详解Java读取Jar中资源文件及示例代码

    2021-07-12 11:18:52
  • asp之家 软件编程 m.aspxhome.com