【java学习—十一】注解:Annotation(3)

文章目录

  • 1. 相关概念
  • 2. 基本的Annotation
  • 3. 自定义Annotation


注意:注解这部分内容,了解即可

1. 相关概念

  • 从 JDK 5.0 开始 , Java 增加了对元数据 (MetaData) 的支持 , 也就是 Annotation( 注释 )
  • Annotation 其实就是代码里的特殊标记 , 这些标记可以在编译 , 类加载 , 运行时被读取 , 并执行相应的处理 。通过使用Annotation, 程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息
  • Annotation 可以像修饰符一样被使用 , 可用于修饰包 , 类, 构造器 , 方法 , 成员变量 , 参数 , 局部变量的声明 ,这些信息被保存在 Annotation 的 name=value对中 .
  • Annotation 能被用来为程序元素 ( 类 , 方法 , 成员变量等 ) 设置元数据

2. 基本的Annotation

    使用 Annotation 时要在其前面增加 @ 符号 , 并把该 Annotation 当成一个修饰符使用,用于修饰它支持的程序元素

三个基本的 Annotation:
    ①@Override:限定重写父类方法 , 该注释只能用于方法
    ②@Deprecated:用于表示某个程序元素 ( 类 , 方法等 ) 已过时
    ③@SuppressWarnings:抑制编译器警告

举例:

package day11;

import java.util.ArrayList;
import java.util.List;

public class Test4 {
	public static void main(String[] args) {
		new TestB().test1();
		
		@SuppressWarnings({ "rawtypes", "unused" })//抑制警告
		List list = new ArrayList();
	}
}


class  TestA{
	public void test() {
		
	}
}

class TestB extends TestA{
	@Override
	public void test() {
		// TODO Auto-generated method stub
		super.test();
	}
	
	@Deprecated
	public void test1() {
		
	}
}

只看上面代码显示不了提示信息,下面通过截图可以对比出:

不加@SuppressWarnings({ "rawtypes", "unused" })
在这里插入图片描述
@SuppressWarnings({ "rawtypes", "unused" })之后:
在这里插入图片描述

3. 自定义Annotation

  • 定义新的 Annotation 类型使用 @interface 关键字
  • Annotation 的成员变量在 Annotation 定义中以无参数方法的形式来声明,其方法名和返回值定义了该成员的名字和类型 .
  • 可以在定义 Annotation 的成员变量时为其指定初始值 , 指定成员变量的初始值可使用 default 关键字
  • 没有成员定义的 Annotation 称为标记 ; 包含成员变量的 Annotation 称为元数据 Annotation

举例:

package day11;

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

class  TestA{
//	@TestAnn()//只能给属性做注解,不能给方法做注解
	public void test() {
	
	}
}

class TestB extends TestA{
	
	@TestAnn(id = 100, desc = "姓名")
	String name;
}


@Target(ElementType.FIELD)//这个注解类是给其他类的属性做注解:只能给属性做注解,不能给方法等做注解
@Retention(RetentionPolicy.RUNTIME)//定义注解的生命周期
@Documented
@interface TestAnn{
	public int id() default 0;
	public String desc() default "";
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爱写bug的小邓程序员个人博客

博客网址: http://www.006969.xyz 欢迎来到我的个人博客,这里主要分享我对于前后端相关技术的学习笔记、项目实战经验以及一些技术感悟。 在我的博客中,你将看到以下主要内容: 技术文章 我将会分享我在学习前后端技术过程中的一些感悟&am…

chorme安装esay scholar及chrome 无法从该网站添加应用、扩展程序和用户脚本解决方案

问题描述 如题,博主想安装easy scholar用于查询论文的分区,结果安装了半天一直出现chrome 无法从该网站添加应用、扩展程序和用户脚本解决方案的问题。 解决方案 先从这个网址下载:https://www.easyscholar.cc/download 然后对下载好的文…

Spring源码分析篇一 @Autowired 是怎样完成注入的?究竟是byType还是byName亦两者皆有

1. 五种不同场景下 Autowired 的使用 第一种情况 上下文中只有一个同类型的bean 配置类 package org.example.bean;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;Configuration public class FruitCo…

tbh Cutter切割节点

在tbh过程中,如果想把一个元素置为一个位图图片某个图像的后边,如何做呢? 如:把圆形放到花的后边: 最后实现效果:(请忽略边缘的细节,这里只是记录用法) 第一步&#xf…

2023大湾区粤港澳金融数学建模思路代码分享

首先非常建议大家仔细的阅读这个题的题目介绍,还有附赠的就是那个附件里的那几篇材料,我觉得你把这些内容读透理解了,就可以完成至少第一、第二、第三问,嗯,好。然后对于题目里它主要第一部分给出了常用的估值模型&…

MySQL安装『适用于 CentOS 7』

✨个人主页: 北 海 🎉所属专栏: MySQL 学习 🎃操作环境: CentOS 7.6 腾讯云远程服务器 🎁软件版本: MySQL 5.7.44 文章目录 1.MySQL 的清理与安装1.1查看是否存在 MySQL 服务1.2.卸载原有服务1.…

[论文精读]How Powerful are Graph Neural Networks?

论文原文:[1810.00826] How Powerful are Graph Neural Networks? (arxiv.org) 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记&#x…

docker--基本操作

第 1 章 Docker基础 1.1 docker简介 在这一部分我们主要讲两个方面: docker是什么、docker特点 1.1.1 docker是什么 docker是什么? docker的中文解释是码头工人。 官方解释: Docker是一个开源的容器引擎,它基于LCX容器技术&…

关于宝塔面板提示“upgrade your ACME client to support TLSv1.2 or better”的解决办法

今天续期SSL证书的时候提示“upgrade your ACME client to support TLSv1.2 or better”,这一般是旧系统情况下TLS版本过低:acme.sh版本低于2.8所引起的,也就是提示:升级你的系统至 TLS 1.2 协议或更高版本。 但是国内服务器无法…

Web3公链之Cosmos生态的项目Celestia

文章目录 Web3公链之Cosmos生态的项目:模块化区块链Celestia什么是CelestiaCelestia网络架构数据可用性问题有哪些可用的解决方案? 发展历史运行节点参考 Web3公链之Cosmos生态的项目:模块化区块链Celestia 什么是Celestia 官网&#xff1a…

计算机网络与技术——数据链路层

😊计算机网络与技术——数据链路层 🚀前言☃️基本概念🥏封装成帧🥏透明传输🥏差错检测 ☃️点对点协议PPP🥏PPP协议的特点🥏PPP协议的帧格式🔍PPP异步传输时透明传输(字…

的修工单管理系统好用吗?工单系统应该怎么选?

在当今的数字化时代,企业运营效率的高低往往取决于其内部管理工具的先进性和实用性。工单管理系统作为企业运营中的重要工具,其作用日益凸显。市场上存在许多工单管理系统,但“的修”以其独特的产品差异化和优势,在竞争中独树一帜…

东初版 java代码混淆 java加密class Java混淆实际方案

作为资深的开发专家,我很高兴与您分享有关Java混淆的实际方案和案例。Java混淆是一种重要的安全措施,用于保护您的代码免受恶意分析和反编译的威胁。在本文中,我将介绍Java混淆的基本原理、常用工具,以及一个简单的案例来演示如何…

c++从入门到放弃,小白踩坑记录1

c从入门到放弃,小白踩坑记录1 错误问题描述 没有与这些操作数匹配的运算符操作数类型为std::basic_ostream <char,std::char traits <char > > < < <unknown-type > 错误代码 #include<iostream> int main(void) {std::cout << "…

今日头条小程序源码系统 带完整搭建教程

随着小程序的发展&#xff0c;越来越多的企业和开发者开始关注小程序的开发。今天源码小编给大家分享一款今日头条小程序源码系统&#xff0c;并附带完整的搭建教程。 今日头条小程序源码系统是一款基于PHPMySQL开发组合开发的小程序框架&#xff0c;具有丰富的组件库和插件生…

ASO优化之如何制作Google Play的长短描述

应用的描述以及标题和图标是元数据中最关键的元素&#xff0c;可以影响用户是否决定下载我们的应用程序。简短描述的长度限制为80个字符&#xff0c;它提供了更多的有关应用背景信息的机会。 1、简短描述帮助用户快速了解我们应用。 确保内容丰富的同时&#xff0c;保持简洁和…

科研迷雾:读研以来,我发现的科研界“怪象”

1 引言 随着读论文和做实验的增多&#xff0c;我发现了sci的很多猫腻经不起细细推敲&#xff0c;原来科研并不如我想象的神圣&#xff0c;还不如工业界来的实在&#xff0c;因为在工业界做项目出现问题&#xff0c;客户是验收不了不给付钱的。所以论文只是一个玩具。 2 常见的…

ue5 右击.uproject generator vs project file 错误

出现如下错误 Unable to find valid 14.31.31103 C toolchain for VisualStudio2022 x64 就算你升级了你的 vs installer 也不好使 那是因为 在C:\Users\{YourUserName}\AppData\Roaming\Unreal Engine\UnrealBuildTool\BuildConfiguration.xml 这个缓存配置文件中写死了 14…

armbian 安裝配置教程

1、安装贝锐蒲公英 下载安装包 cd /usr/local/share mkdir pgyvpn wget https://pgy.oray.com/softwares/58/download/1839/PgyVisitor_Raspberry_2.4.0.52291_arm64.deb安装 dpkg -i PgyVisitor_Raspberry_2.4.0.52291_arm64.deb 输入pgyvisitor login/pgyvisitor login -…

广告行业中那些趣事系列65:使用chatgpt编写基金定投程序

导读&#xff1a;本文是“数据拾光者”专栏的第六十五篇文章&#xff0c;这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇介绍了prompt生成器和使用chatgpt来编写一个基金定投程序&#xff0c;对于希望使用chatgpt提升工作效率&#xff0c;尤其是对投资基金感兴趣…