【Java】后端开发语言Java和C#,两者对比注解和属性的区别以及作用

欢迎来到《小5讲堂》
大家好,我是全栈小5。
这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 前言
  • Java注解
  • C#属性
  • 共同点
  • 差异

前言

每一门后端开发语言,语法和叫法都会大同小异,之前使用C#语言比较多,最近在使用Java语言,看到注解这个词有点陌生,
然后就有这篇文章简单进行两者的区别。

Java注解

  • 一个简单的 Java 注解的使用代码示例
// 声明一个注解
public @interface MyAnnotation {String value() default "";  // 定义一个注解元素
}// 使用注解
@MyAnnotation(value = "Hello")
public class MyClass {@MyAnnotation(value = "World")private String myField;@MyAnnotationpublic void myMethod() {// 方法的实现...}
}

在这个示例中,首先声明了一个注解 @MyAnnotation。
注解使用 @interface 关键字进行声明,它可以拥有多个元素,这里我们定义了一个名为 value 的元素。
接着,在类 MyClass 上使用了 @MyAnnotation 注解,并为其元素 value 提供了值 “Hello”。
这表示类 MyClass 被标记了 @MyAnnotation 注解,并传递了相应的值。
类中的字段 myField 和方法 myMethod 也用 @MyAnnotation 注解进行了标记。
字段 myField 的 value 元素被赋值为 “World”,而方法 myMethod 的 value 元素采用了默认值。
注解可以用于描述类、字段、方法等代码元素,并提供额外的信息或配置。它们可以通过反射获取,以便在运行时进行进一步的处理。
注解为 Java 提供了一种灵活且可扩展的方式来增强代码的表达力和功能。

C#属性

C# 也支持注解。
在 C# 中,注解被称为属性(Attributes)。
属性可以附加到程序元素(如类、方法、属性等)上,以提供额外的信息或行为。
C# 中的属性可以用来提供编译时的元数据,也可以用于运行时的反射。
属性可以用于描述代码元素的特性、配置代码生成、实现自定义行为等。

  • 下面是一个简单的示例,展示了如何在 C# 中使用属性
[Serializable]
public class MyClass
{[Browsable(true)]public string MyProperty { get; set; }[Obsolete("此方法已弃用。请改用NewMethod。")]public void OldMethod(){// 方法的实现...}
}

在这个示例中,Serializable 和 Browsable 是两个属性,它们分别用于标记类 MyClass 和属性 MyProperty,提供了相关的元数据信息。
Obsolete 属性用于标记方法 OldMethod,表示该方法已被弃用,并提供了替代方法的提示信息。
通过使用属性,可以在 C# 中实现类似于 Java 中注解的功能。
属性提供了一种灵活且强大的方式来扩展和描述代码元素的特性和行为。

共同点

Java 的注解和 C# 的属性在概念上类似,并且都用于提供额外的信息和行为,用于描述代码元素。
尽管它们在语法和使用上略有不同,但目的和功能类似。
1.提供元数据
注解和属性可以为代码元素(如类、字段、方法等)提供额外的元数据信息。这些信息可以用于编译时的处理和分析,或者在运行时通过反射进行读取和处理。
2.扩展行为
注解和属性可以用于配置代码生成,实现自定义行为或逻辑。它们可以影响编译器、框架或其他工具的行为,以此来改变代码的运行方式。
3.可自定义性
注解和属性都可以根据需要进行定义和使用。程序员可以创建自己的注解或属性,并将它们应用于代码中,以满足特定的需求和约束。

差异

注解和属性在语法上有所差异。
1.符号
在 Java 中,注解使用 @ 符号作为前缀,放置于代码元素之前。
而在 C# 中,属性使用方括号 [] 包裹,放置于代码元素上面。
2、成员
Java 的注解可以具有元素,而 C# 的属性可以具有参数和访问器。

尽管有些差异,Java 的注解和 C# 的属性都适用于描述代码元素的特性、配置代码生成、实现自定义行为等。
它们是两种流行的语言中的重要特性之一,可以提升代码的灵活性和可读性。

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

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

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

相关文章

抖音SEO搜索排名优化培训教程课件

【干货资料持续更新,以防走丢】 抖音SEO搜索排名优化培训教程课件 部分资料预览 资料部分是网络整理,仅供学习参考。 抖音运营资料合集 (完整资料包含以下内容) 目录 抖音易爆单的商品特征 抖音作为一款短视频平台,…

【应用方案】基于MT7628 JN5169 和SUN724的4G-Zigbee智能网关方案

产品方案特性 - 4G-Zigbee智能网关扩展性强; - 百兆以太网接入; - 支持Zigbee 3.0智能家居产品和智能安防产品接入; - 实时检测烟感、气感,联动阀门控制器可自动关闭燃气阀门,并拨打报警电话,防止火灾&…

静态住宅代理与动态住宅代理的区别?如何选?

住宅代理ip分类两种类型:静态住宅代理和动态住宅代理,他们有什么区别又能用在什么场景呢?我们先从他们是如何运作开始。 一、什么是住宅代理ip isp住宅代理ip我们称为真人住宅代理,地址是从真人/家庭中出发,安全性更高…

游戏素材永不缺,免费在线AI工具Scenario功能齐全,简单易用

Scenario是一个在线的AI驱动的工具,主要用于游戏艺术创作。它提供了一套全面的功能,旨在帮助游戏开发者创建与其独特风格和艺术方向相符的独特、高质量的游戏艺术。Scenario的突出特点之一是它的微调能力,允许用户根据独特的风格和艺术方向训…

Qt单个字符判断

1.相关说明 字符的Unicode编码、单个字符的判断 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui;…

【AIGC入门一】Transformers 模型结构详解及代码解析

Transformers 开启了NLP一个新时代,注意力模块目前各类大模型的重要结构。作为刚入门LLM的新手,怎么能不感受一下这个“变形金刚的魅力”呢? 目录 Transformers ——Attention is all You Need 背景介绍 模型结构 位置编码 代码实现&…

Agent检索增强生成

检索增强生成(RAG)设计模式通常用于在特定数据域中开发大语言模型(LLM)应用。然而,RAG的过往的研究重点主要在于提高检索工具的效率,例如嵌入搜索、混合搜索和微调嵌入,而忽视了智能搜索。本文介绍了一种受人类研究方法启发的新方法&#xff…

for循环判断有几个偶数

num100 count0 for i in range(1,num):if i%20:print("为偶数")count1 print(f"1-100的范围内,有{count}个偶数") 运行结果如下:

代码随想录Day21 | 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先

代码随想录Day21 | 530.二叉搜索树的最小绝对差 501.二叉搜索树中的众数 236. 二叉树的最近公共祖先 二叉搜索树的最小绝对差二叉搜索树中的众数二叉树的最近公共祖先 二叉搜索树的最小绝对差 文档讲解:代码随想录 视频讲解: 二叉搜索树中,需…

使用免费敏捷工具Leangoo领歌管理Sprint Backlog

什么是Sprint Backlog? Sprint Backlog是Scrum的主要工件之一。在Scrum中,团队按照迭代的方式工作,每个迭代称为一个Sprint。在Sprint开始之前,PO会准备好产品Backlog,准备好的产品Backlog应该是经过梳理、估算和优先…

C语言编译链接

1.翻译环境和运⾏环境 在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令。 第2种是执⾏环境,它⽤于实际执⾏代码。 2. 翻译环境 翻译环境是由编译和链接两个⼤的过程组成的&…

Spring环境搭配

概述 Spring 是一个开源框架,Spring 是于2003 年兴起的一个轻量级的Java 开发框架,由 RodJohnson 在其著作 Expert One-On-One J2EE Development and Design 中阐述的部分理念和原型衍生而来。它是 为了解决企业应用开发的复杂性而创建的。框架的主要优势…

mockjs使用1

mockjs使用 1、定义 Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能: 根据数据模板生成模拟数据模拟 Ajax 请求,生成并返回模拟数据基于 HTML 模板生成模拟数据 2…

软件测试|SQLAlchemy query() 方法查询数据

简介 上一篇文章我们介绍了SQLAlchemy 的安装和基础使用,本文我们来详细介绍一下如何使用SQLAlchemy的query()方法来高效的查询我们的数据。 创建模型 我们可以先创建一个可供我们查询的模型,也可以复用上一篇文章中我们创建的模型,代码如…

游戏开发,中小公司跳槽去大厂容易还是考研应届生校招容易?

游戏开发,中小公司跳槽去大厂容易还是考研应届生校招容易? 在之前的文章中,我们提到过,游戏开发行业首选直接进入游戏大厂。《开发者必读:如何选择适合的游戏开发公司?》因为大厂不仅能提供良好的职业发展…

接口防刷方案

1、前言 本文为描述通过Interceptor以及Redis实现接口访问防刷Demo 2、原理 通过ip地址uri拼接用以作为访问者访问接口区分 通过在Interceptor中拦截请求,从Redis中统计用户访问接口次数从而达到接口防刷目的 如下图所示 3、案例工程 项目地址: htt…

localStorage、sessionStorage、vuex区别和使用感悟

一、介绍及区别 localStorage的生命周期是永久;不手动在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。 sessionStorage的生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭,那么所有通过sessionStorage存…

AI红娘开启约会新时代;网易云音乐Agent实践探索;微软生成式AI课程要点笔记;ComfyUI新手教程;图解RAG进阶技术 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 👀 Perplexity 官宣 7360 万美元B轮融资,打造世界上最快最准确的答案平台 https://blog.perplexity.ai/blog/perplexity-rais…

uniapp中uview组件库Toast 消息提示 的使用方法

目录 #基本使用 #配置toast主题 #toast结束跳转URL #API #Props #Params #Methods 此组件表现形式类似uni的uni.showToastAPI,但也有不同的地方,具体表现在: uView的toast有5种主题可选可以配置toast结束后,跳转相应URL目…

Linux系统——yum仓库及NFS共享

目录 一、yum仓库 1.yum简介 2.yum实现过程 3.如何实现安装服务 4.yum配置文件及命令 4.1yum配置文件 4.1.1主配置文件 4.1.2仓库设置文件 4.1.3日志文件 4.2yum命令详解 4.2.1查询 4.2.2yum安装升级 4.2.3软件卸载 4.2.4操作安装历史记录 5.搭建本地yum仓库 5…