• java语法复习:注解


    目录

    一.注解概念

    二.常用注解(1) @Override: 限定某个函数必须重载其他函数,该注解只能用于函数(2) @Deprecated:用于表示某个程序元素(类、函数)已过时(3) @SuppressWarnings:抑制编译器警告

    三.元注解


    一.注解概念

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

    二.常用注解
    (1) @Override: 限定某个函数必须重载其他函数,该注解只能用于函数
    (2) @Deprecated:用于表示某个程序元素(类、函数)已过时
    (3) @SuppressWarnings:抑制编译器警告

    举例①: 对于@Override注解 限定某个函数必须重载其他函数,该注解只能用于函数

    1. //本例中所作的是在子类ColorPoint中 重写 基类Point 中的getString()函数
    2. class Point {
    3. public int x;
    4. public int y;
    5. public String getString(){
    6. return String.format("(%d,%d)",x,y);
    7. }
    8. }
    9. class ColorPoint extends Point{
    10. private String color;
    11. @Override
    12. public String getString(){ //重写Point中的getString()函数
    13. return String.format("(%d,%d,%s)",super.x,super.y,color);
    14. }
    15. }

    当然,我们更多用到的是对java自带函数重写,如compareTo() 和 toString() 函数,

    比如 当我们想要对多个点进行排序,点中含有x、y两个关键字 

    要按第一关键字正序排序,若第一关键字相等则比较第二关键字:

    1. package org.example;
    2. import java.lang.reflect.Array;
    3. import java.util.Arrays;
    4. class Point implements Comparable{//使用Comparable接口重写toCompare(obj)方法
    5. public int x;
    6. public int y;
    7. public Point(int x,int y){
    8. this.x = x;
    9. this.y = y;
    10. }
    11. @Override //重写toString函数
    12. public String toString() {
    13. return String.format("x: %d y: %d \n",x,y);
    14. }
    15. @Override
    16. public int compareTo(Point o) { //重写compareTo函数
    17. if(this.x > o.x)
    18. return 1;
    19. if(this.x < o.x)
    20. return -1;
    21. if(this.y > o.y)
    22. return 1;
    23. if(this.y < o.y)
    24. return -1;
    25. return 1;
    26. }
    27. }
    28. public class Main {
    29. public static void main(String[] args) {
    30. Point[] arr = new Point[]{new Point(7,2),new Point(5,4),new Point(5,2)};
    31. Arrays.sort(arr);//排序
    32. System.out.println(Arrays.toString(arr));//输出
    33. }
    34. }
    1. //输出:
    2. [x: 5 y: 2
    3. , x: 5 y: 4
    4. , x: 7 y: 2
    5. ]

    举例②: 对于@Deprecated 用于表示某个程序元素(类、函数)已过时

     可以看到调用添加@Deprecated注解的方法时,会出现该方法已被弃用

    @Override不同的是,该注释不仅能标志在函数上,还能标志在类上,表示某个类已过时

    这是因为它们的 元注解 不同 第三节中会提到.

    举例③ 对于@SuppressWarnings:抑制编译器警告

    如图,我们可以把 例子②  中getString()方法弃用的警告抑制,而不显示

     

    三.元注解

    修饰其他注解的注解,就被称为元注解。

    (1) Retention:指定注解的作用范围
    (2) Target:指定注解可以用在哪些地方
    (3) Document:注定注解是否出出现在javadoc中
    (4) Inherited:子类会继承父类的注解

    接第二节 @Override 为什么只能修饰方法 ,我们可以按住ctrl键点击@Override 康康它的具体实现:

    1. @Target(ElementType.METHOD)
    2. @Retention(RetentionPolicy.SOURCE)
    3. public @interface Override {
    4. }

    可以看到,@Override注解 只能用在ElementType.METHOD, 即只能用在方法类型上,

    同时在 RetentionPolicy.SOURCE, 即源码阶段阶段调用该注解

    同样的 对于@Deprecated注解:

    1. @Documented
    2. @Retention(RetentionPolicy.RUNTIME)
    3. @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
    4. public @interface Deprecated {
    5. }

    Target()注解可知  @Deprecated注解可以用在 构造器、成员变量、局部变量、方法、包、函数参数类上

    同时 在RetentionPolicy.RUNTIME 即运行阶段调用该注解

    其它注解同理。

  • 相关阅读:
    9.2.1 YEAR类型
    uniPush实战操作详细教程步骤
    33李沐动手学深度学习v2/残差网络,ResNet
    不学51直接学stm32可以吗?学stm32需要哪些基础?
    【JVM笔记】本地方法栈
    在SpringBoot项目中集成TDengine,并通过SQL对数据进行增删改查
    K8S-CNI
    运行yolov5 v6遇到的问题
    【数据结构基础_字符串】Leetcode 415.字符串相加
    EN 12209建筑五金件锁、插销及其锁板—CE认证
  • 原文地址:https://blog.csdn.net/m0_64226820/article/details/127950015