注解-Annotation

news2024/11/29 0:43:15

一. 注解解析

1.1 注释和注解的区别?(掌握)

  • 共同点:都可以对程序进行解释说明。
  • 不同点:注释,是给程序员看的。只在Java中有效。在class文件中不存在注释的。
  • 当编译之后,会进行注释擦除。
  • 注释是给编译器看的吗?

    不是,当我们的代码编译成class文件之后,在class文件里面是没有注释的,编译的时候它会做一个注释擦除。

  • 注解,是给虚拟机看的。当虚拟机看到注解之后,就知道要做什么事情了。

什么是注解:

  • Annotation表示注解。是JDK1.5的新特性。
  • 注解的主要作用:对我们的程序进行标注。通过注解可以给类增加额外的信息。
  • 注解是给编译器或JVM(Java 虚拟机)看的,编译器或JVM(Java 虚拟机)可以根据注解来完成对应的功能。

1.2 如何使用注解(掌握)

在以前看过注解@Override。

  • 当子类重写父类方法的时候,在重写的方法上面写@Override。
  • 当虚拟机看到@Override的时候,就知道下面的方法是重写的父类的。检查语法,如果语法正确编译正常,如果语法错误,就会报错。

1.3 Java中已经存在的注解(掌握)

  1. @Override:表示方法的重写
  2. @Deprecated:表示修饰的方法已过时
  3. @SuppressWarnings("all"):压制警告

同时,类名下面波浪线也消失了! 

 

  • @Deprecated:已过时的方法,还是可以继续使用的,但是一定会有替代解决方案

除此之外,还需要掌握第三方框架中提供的注解:

比如:Junit

  • @Test 表示运行测试方法
  • @Before 表示在Test之前运行,进行数据的初始化
  • @After 表示在Test之后运行,进行数据的还原

二. 自定义注解(了解即可)

  • 自定义注解单独存在是没有什么意义的,一般会跟反射结合起来使用,会用发射去解析注解。
  • 针对于注解,只要掌握会使用别人已经写好的注解即可。
  • 关于注解的解析,一般是在框架的底层已经写好了。
  • 注解名跟类名的命令规则一样,首字母大写,如果有多个单词,每次单词的首字母大写。

  • 默认值可以不用写。 

package com.annotation;

/**
   自定义注解(默认值可以不用写)
 */
public @interface MyAnno1 {
    public String name();
    public int age();
}
package com.annotation;

@MyAnno1(name = "shipo" , age = 100)
public class MyAnnoDemo2 {
    @MyAnno1(name = "shipo", age = 100)
    String aaa;
    String bbb;

    @MyAnno1(name = "shipo" , age = 100)
    public void method1(){
        System.out.println("method1方法");
    }

    public void method2(){
        System.out.println("method2方法");
    }

}

特殊属性(掌握):

value():

  • 当注解中只有"一个属性",并且属性名是"value",使用注解时,可以省略value属性名  
//注解的定义
public @interface Anno2 {
    public String value();

    public int age() default 23;
}

//注解的使用
@Anno2("123")
public class AnnoDemo2 {

    @Anno2("123")
    public void method(){

    }
}

package com.annotation;

/**
   自定义注解
 */
public @interface MyAnno1 {

    public String value();
    public String name();

}
package com.annotation;

@MyAnno1(value = "abc" , name = "shipo")
public class MyAnnoDemo2 {
    String aaa;
    String bbb;

    public void method1(){
        System.out.println("method1方法");
    }

    public void method2(){
        System.out.println("method2方法");
    }

}

 三. 元注解(了解)

  •  @Target注解决定了你下面的这个注解可以写在哪

package com.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
   自定义注解
 */
@Target(ElementType.METHOD) // 规定了该注解只能写在方法上面
// RUNTIME,这个是在程序运行的时候,仍然会保留这个注解[以后使用反射,就必须是这个保留策略]
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnno1 {

    public String value();
    public String name();

}
package com.annotation;


public class MyAnnoDemo2 {
    String aaa;
    String bbb;

    @MyAnno1(value = "abc" , name = "shipo")
    public void method1(){
        System.out.println("method1方法");
    }

    @MyAnno1(value = "abc" , name = "shipo")
    public void method2(){
        System.out.println("method2方法");
    }

}

 四. 注解解析

五. 注解的应用场景:junit框架

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/474219.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

了解标量、向量和点积

数据科学基础数学:线性代数简介 了解标量、向量和点积 机器只能按着算法理解和处理数据结构存储的数字. 例如创建垃圾邮件检测器,则首先必须将文本数据转换为数字(通过单词嵌入)。 两个句子之间的余弦相似性 两个句子之间的余弦相似性可以通过它们的向量…

【软件相关】Proteus仿真STM32记录

文章目录 0 前期教程1 前言2 先说说建议的流程3 需要注意的事项3.1 供电网配置不要忘了3.2 ADC模块的使用3.3 元器件查询手册 4 一些小技巧 0 前期教程 【软件相关】Proteus 8入门教程 1 前言 最近接了一个项目,是基于Proteus仿真STM32的,虽然此前有听…

软件开发过程中,前期准备的重要性

需求人员,有时候,一开始,并不完全确定自己想要的是什么 因此,值得花费时间,找出他们真正想要的东西 因为,改动的代价,可能代价会是巨大的 构建之前清除一个错误的成本 ( 1 10 ∼ 1 100 ) 开发过…

Mysql 触发器 -> 监控 -> 表 修改前后的 数据 -> 日志

0. 课程视频 https://www.bilibili.com/video/BV1Kr4y1i7ru?p116&spm_id_frompageDriver&vd_sourceff8b7f852278821525f11666b36f180a 1. 简介 1.1 是对象->与表有关 1.2 校验数据完整性 -> 日志记录 1.3 在 insert / update /delete 前后触发 1.4 支持行…

权限提升:Mysql 数据库 .(UDF || 启动项 || 反弹)

权限提升:Mysql 数据库. 权限提升简称提权,由于操作系统都是多用户操作系统,用户之间都有权限控制,比如通过 Web 漏洞拿到的是 Web 进程的权限,往往 Web 服务都是以一个权限很低的账号启动的,因此通过 Web…

〖ChatGPT实践指南 - 零基础扫盲篇⑨〗- OpenAI API 的数据使用政策以及使用限制

文章目录 ⭐ OpenAI API 数据使用政策⭐ 关于 API 数据的一些通用型问题⭐ OpenAI API 数据使用政策的限制 该章节为各位小伙伴介绍以下 OpenAI 的API 数据使用政策,这部分的内容是 OpenAI 官方为我们提供的一份文档,这份文档说明了官方在为我们提供的AP…

Python小姿势 - ## 一、Python多进程编程

一、Python多进程编程 在上一节,我们学习了Python的多线程编程,这节我们学习一下Python的多进程编程。 多进程和多线程比较类似,区别在于多进程是指在一个应用程序中同时运行多个进程,而多线程是指在一个进程中同时运行多个线程。…

ovs-vsctl 命令详解

ovs-vsctl 命令详解 网桥Bridge 创建 Bridge ovs-vsctl add-br br0 删除 Bridge ovs-vsctl del-br br0 列出 Bridge ovs-vsctl list-br 显示详情 ovs-vsctl show 端口 Port 添加端口 ovs-vsctl add-port br0 p1 其中br0 为上面添加的bridge p1可以是物理端口或者vN…

50道web前端工程师面试题及答案解析,你学会了吗

简介:本文包含了50个实用的前端面试题及答案解析,涵盖了HTML、CSS、JavaScript、DOM、Ajax、MVC、模块化、ES6、SPA、Webpack、Babel、Virtual DOM、响应式设计、移动优先设计、响应式图片、CSS 预处理器、后处理器、模块化、布局、盒模型、浮动、定位、…

国民技术N32G430开发笔记(5)- 基本定时器TIM6的使用

基本定时器TIM6的使用 1、设置一个定时器,100ms一次去开关LED灯 2、tim6的初始化代码: 大部分代码来自官方demo /****************************************************************************** Copyright (c) 2019, Nations Technologies Inc.** …

python毕业设计之django+vue专业手语翻译工作室预约管理系统

发起预约:用户选定某翻译员发起预约,进行预约信息填写,主要内容有联系电话、工作方式、场合、时间段;或发起预约,填写预约信息,筛选翻译员,可按关键词筛选或等级筛选。发起预约时间需至少提前服…

从CPU的视角看 多线程代码为什么那么难写!

当我们提到多线程、并发的时候,我们就会回想起各种诡异的bug,比如各种线程安全问题甚至是应用崩溃,而且这些诡异的bug还很难复现。我们不禁发出了灵魂拷问 “为什么代码测试环境运行好好的,一上线就不行了?”。 为了解…

如何将 github pages 迁移到 vercel 上托管

如何将 github pages 迁移到 vercel 上托管 前言 早期网站使用 github pages,后来迁移到 coding,最近又放到腾讯云网站静态托管,无论是 coding 的 cos 存储桶,还是静态网站托管 他们都是收费的,那有没有免费的托管商呢,既不影响网站的访问速度还免费,于是,找了一下,还真有,ve…

电商广告营销中,有哪些常见公式和优化手段

对于电商广告ROI的计算,广泛地应用在二类电商、跨境电商等营销场景中,了解这些相关的投放公式,有助于我们更好地进行广告投放和优化。 特别是针对商家而言,可以指导选品及定价策略、优化最终的广告投放收益,避免出现花…

学系统集成项目管理工程师(中项)系列14_采购管理

1. 概念和术语 1.1. 采购是从项目团队外部获得产品、服务或成果的完整的购买过程 1.2. 三大类 1.2.1. 工程 1.2.2. 产品/货物 1.2.3. 服务 2. 主要过程 2.1. 编制采购管理计划 2.2. 实施采购 2.3. 控制采购 2.4. 结束采购 3. 合同 3.1. 包括买方和卖方之间的法律文…

css布局实战:动态详情九宫格

上篇文件介绍了如何实现九宫格图片展示:css布局入门级实战之九宫格网格布局.不过存在一个问题:图片之间没有间距,用户体验欠佳;基于以上问题,本文进行优化. 较之前实现样式做以下调整:四张图按照两行显示,每行显示三个.不足的显示空白.之前是两行两列显示. 对应九宫格样…

忆暖行动|“他一个人推着老式自行车在厚雪堆的道路上走,车上带着学生考试要用的司机”

忆暖行动|“他一个人推着老式自行车在厚雪堆的道路上走,车上带着学生考试要用的sj” 一头白发,满山青葱 在那斑驳的物件褶皱中,透过泛黄的相片,掩藏着岁月的冲刷和青葱的时光。曾经的青年早已经不复年轻,但是那份热爱…

从信息泄露到权限后台

声明:文中涉及到的技术和工具,仅供学习使用,禁止从事任何非法活动,如因此造成的直接或间接损失,均由使用者自行承担责任。 点点关注不迷路,每周不定时持续分享各种干货。 众亦信安,中意你啊&a…

1210. 穿过迷宫的最少移动次数

你还记得那条风靡全球的贪吃蛇吗? 我们在一个 n*n 的网格上构建了新的迷宫地图,蛇的长度为 2,也就是说它会占去两个单元格。蛇会从左上角((0, 0) 和 (0, 1))开始移动。我们用 0 表示空单元格,用 1 表示障碍…

题目 3166: 蓝桥杯2023年第十四届省赛真题-阶乘的和--不能完全通过,最好情况通过67.

原题链接: 题目 3166: 蓝桥杯2023年第十四届省赛真题-阶乘的和 https://www.dotcpp.com/oj/problem3166.html 致歉 害,首先深感抱歉,这道题还是没有找到很好的解决办法。目前最好情况就是67分。 这道题先这样跳过吧,当然以后还…