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

初步认识注解

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

初步认识注解

注解 声明

这篇文章参考的是(210条消息) 十分钟深度学习Java注解_何学长在奔跑的博客-CSDN博客这位大佬的博客,写这篇文章呢就是记录下自己的学习记录,加入个人理解。

什么是注解?

注解,也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。这看不懂没关系,先别管吗,看了后面大概就知道它是干嘛用的。

注解有哪些类型? 按作用分类:(我直接照搬)
  1. 编写文档:通过代码里标识的元数据生成文档

    1. 代码分析:通过代码里标识的元数据对代码进行分析

    2. 编译检查:过代码里标识的元数据让编译器能够实现基本的编译检查

根据注解参数分类
	1.  标记注解:没有参数的注解:,仅用自身的存在与否为程序提供信息,如@Override注解,该注解没有参数,用于表示当前方法为重写方法。
	2.  单值注解: 只有一个参数的注解,如果该参数的名字为value,那么可以省略参数名
	3.  完整注解: 有多个参数的注解。

内置注解

​ 顾名思义就是jdk内置的注解。

  • @Override

    标记在成员方法上,用于标识当前方法是重写父类(父接口)方法,编译器在对该方法进行编译时会检查是否符合重写规则,如果不符合,编译报错。

    什么意思呢?就是你如果重写父类的方法,哪么如果在前面标记了@Override哪么你这个重写方法就要复合重写规则。举个列子:

    @Verride //注解:说明接下来这个方法是重写父类的方法
    public String ToString(){
        return "dvhbd";
    }
    //如果这样写
    @Verride 
    public String ToStrings(){//注意名字多了个s哪么它就不满足重写规则,编译时就要报错
        return "dvhbd";
    }
    
  • @Deprecated

    用于标记当前类、成员变量、成员方法或者构造方法过时如果开发者调用了被标记为过时的方法,编译器在编译期进行警告。

    我的理解就是每个语言都会跟新,所以以前的方法现在有了更高效方法,哪么这个方法就过时了,人们不用他了,但是我们使用过程又不知道这个方法过时没有,所以官方就会对过时的方法标记,当我们调用时就会提醒我们。当然过时方法依然可以用。举个列子:

    看见没编译器就会自己提示这个函数已经过时,然后给它画上一杠,但是这个函数依旧额可以以用。

    自己怎么用这个注解呢?

  • @SuppressWarnings

    压制警告注解,可放置在类和方法上,该注解的作用是阻止编译器发出某些警告信息,该注解为单值注解。(就一个参数)

    参数有:

    • unchecked:未检查的转化,如集合没有指定类型还添加元素
    • unused:未使用的变量
    • resource:有泛型未指定类型
    • path:在类路径,原文件路径中有不存在的路径
    • deprecation:使用了某些不赞成使用的类和方法
    • fallthrough:switch语句执行到底没有break关键字
    • rawtypes:没有写泛型,比如: List list = new ArrayList();
    • all:全部类型的警告

    简单的说就是只要在警告前标记它并且加入警告的参数,编译器就不会警告这个错误了。

加入注解后

ok,就是这么用到。

自定义注解

格式: public @Interface 注解名 {属性列表/无属性}

注意: 如果注解体中无任何属性,其本质就是标记注解。但是与其标注注解还少了上边修饰的元注解。

我直接代码:

//定义注解
public @interface my{//表准自定义注解格式
    
    int num() default 5; //默认值为5
    String str();
}
//使用注解
@my(num=3,str="str")
//也可以为@my(str="str")
public class use{
    void add(){
        return 1;
    }
}

元注解
元注解:元注解就是用来描述注解的注解。一般使用元注解来限制自定义注解的使用范围、生命周期等等。

我理解的是元注解可以修饰一般注解也可以修饰代码,一般注解修饰只能修饰代码,元注解可以修饰一般注解的使用范围,生命周期等。

元注解分类
  • @Target 指定被修饰的注解的作用范围。其作用范围可以在源码中找到参数值。

举个例:

@Target(ElementType.TYPE)//TYPE参数就代表这个参数是用于描述类,接口,或enum
public @interface my{
   //@Target(ElementType.TYPE)在这标记就会报错因为它是修饰类,接口,或enum的。
    int num();
    String str();
}
  • @Retention 指定了被修饰的注解的生命周期

举例:

@Retention(RetentionPolicy..RUNTIME)
//参数RetentionPolicy..RUNTIME表示注解可以保留到程序运行的时候,它会被加载进入到 JVM 中,所以在程序运行时可以获取到它们。
public @interface my{
    String str();
}
  • @Documented 指定了被修饰的注解是可以Javadoc等工具文档化

    它是一个标记注解(标记注解没有参数)。被该标记注解标记的注解,生成doc文档时,注解是可以被加载到文档中显示的。

  • @Inherited 指定了被修饰的注解修饰程序元素的时候是可以被子类继承的

    它是一个标记注解(标记注解没有参数)。

被修饰的注解是可以Javadoc等工具文档化

它是一个标记注解(标记注解没有参数)。被该标记注解标记的注解,生成doc文档时,注解是可以被加载到文档中显示的。

  • @Inherited 指定了被修饰的注解修饰程序元素的时候是可以被子类继承的

    它是一个标记注解(标记注解没有参数)。

最后

以前很少写博客,这是第二次写,可能比较杂乱无章,错误比较多,个人理解也可能是错的。看不下去就不要看了吧,看我推荐大佬写的博客吧。

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

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

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