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

news2024/11/19 6:39:21

欢迎来到《小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;
    
    @MyAnnotation
    public 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.coloradmin.cn/o/1389822.html

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

相关文章

SpringBoot 源码解析4:refresh 方法解析

SpringBoot 源码解析4:refresh 方法解析 1. refresh 方法解析2. 准备刷新 AbstractApplicationContext#prepareRefresh3. 获取bean工厂 AbstractApplicationContext#obtainFreshBeanFactory4. 准备bean工厂 AbstractApplicationContext#prepareBeanFactory5. Servle…

Windows解决.conda文件夹占用C盘空间过大的问题

背景:C盘空间被.conda文件占用16G,主要原因是里面存放了python环境,提前进行环境迁移,防止后面环境增长C盘空间不足 解决办法: 1. .conda文件备份 2. 将.conda文件夹中的envs内容复制到Anaconda的安装目录下D:\Softwa…

HNU-编译原理-实验2-Bison

编译原理实验2Bison 计科210X 甘晴void 202108010XXX 实验要求 详细的实验项目文档为 https://gitee.com/coderwym/cminus_compiler-2023-fall/tree/master/Documentations/lab2 实验步骤 本次实验需要在 Lab1 已完成的 flex 词法分析器的基础上,进一步使用 b…

车机联网

通过笔记本电脑,D-link给车机提供网络 因为笔记本用的无线网络上网,将无线网络连接设置为共享 设置后的效果 本地连接属性设置 Dlink连接电脑和车机;获取车机的动态ip(动态ip每次开关机都会变化,注意更新&#xff09…

【python 的各种模块】(9) 在python使用PIL( 即pillow模块 ) 修改图片

目录 1 导入PIL模块(pillow) 1.1 PIL的全称:Python Imaging Library 1.2 导入PIL模块 1.2.1 可用的导入形式 1.2.2 常用的导入形式 1.2.3 PIL下面的常用子模块 2 PIL.Image的方法 (读入,生成和显示图片) 2.1 用 PIL.Image…

《教育》期刊是什么级别的期刊?是正规期刊吗?能评职称吗?

《教育》以教育行业的各类新闻为重点,积极推广各地教育部门改革经验及优秀成果,努力挖掘教育一线先进单位和个人,充分发挥新闻舆论的监督作用。 收录情况:知网收录 投稿方式:教育类|《教育》省级 出版周期&…

GPT2 GPT3

what is prompt 综述1.Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing(五星好评) 综述2. Paradigm Shift in Natural Language Processing(四星推荐) 综述3. Pre-Trained Models: Past, Present and Future Pro…

Vue学习笔记5-- nextTick | Vue封装的过渡与动画

一、nextTick(tick-工作,起作用;下次起作用) 语法: this.$nextTick(回调函数)作用:在下一次DOM更新结束后执行其指定的回调。什么时候用:当改变数据后,要基于更新后的新DOM进行某些…

虾皮电商 电商平台:虾皮(Shopee)东南亚领先的电子商务平台

在当今数字化时代,电子商务平台的兴起改变了人们的购物方式。虾皮(Shopee)作为东南亚地区领先的电子商务平台,为消费者提供了便捷、多样化的购物体验。由新加坡的Sea Group(前称Garena)于2015年创立&#x…

程序员书单|本月有哪些新书值得关注?

2024年的第一个月,看了一下计算机书籍的榜单,本周有这样几本新书上榜。 1、GPT图解 大模型是怎样构建的 带你从0到1构建大模型,突破语言奥秘,开启智能未来!深入探索自然语言处理技术的核心原理,结合实战&a…

【Linux】第二十九站:再谈进程地址空间

文章目录 一、一些疑问二、程序没有加载前的地址(程序)三、程序加载后的地址四、动态库的地址 一、一些疑问 什么是虚拟地址?什么是物理地址?CPU读到的指令里面用的地址,是什么地址?? 我们之前在使用动态…

将web如vue等项目部署到宝塔docker镜像中,以便能在任意浏览器访问

文章目录 一、准备工作二、具体步骤1、从已经推送的镜像中拉取镜像2、切换到宝塔-容器,添加容器3、启动容器4、将刚刚的端口号添加到防火墙白名单5、访问部署好的项目 参考资料 一、准备工作 仅需确认宝塔面板已经有docker镜像容器 目前新版宝塔面板都已经内置了d…

数据结构之list类

前言 list是列表类。从list 类开始,我们就要接触独属于 Python 的数据类型了。Python 简单、易用,很大一部分原因就是它对基础数据类型的设计各具特色又相辅相成。 话不多说,让我们开始学习第一个 Python 数据类型一list。 1. list的赋值 输…

做完十年数据分析后的思考与总结

种一棵树最好的时间是十年前,其次是现在。十年了,本次分享大多来自工作中的日常所思所想,欢迎自取。 01 数据分析的本质 数据是基础,分析才是重点。 行业内有专门的统计岗,就是只负责做好数据统计就可以了&#xff0…

使用pycocotools打印更多数据(注意,修改后最好再还原!最好是一次性使用)

文章目录 1 写在前面2 代码效果3 代码修改 1 写在前面 夹带私货,可能有用呢:YOLOv7-tiny,通过pycocotools包得到预测大中小尺寸目标的指标值 仅供参考!写这个代码的目的是能够打印出iou0.50的AP、AR的小中大3个尺寸的值&#xff…

记录汇川:H5U与Factory IO测试14

现实53工位的物料运输。 设置了自动连续存启动:就是一个一个运,按照顺序将空的货架填满。 设置了自动连续存停止:就是完成当前循环后退出。 设置了自动连续取启动:就是一个一个运,按照顺序将有货的货架清空。 设置…

Linux系统:yum仓库

目录 一、yum 1、yum概述 2、yum仓库 3、yum实现过程原理 二、yum配置文件详解 1、主配置文件 2、yum仓库设置文件 3、yum日志文件 三、yum命令详解 1、查询 1.1 yum list [软件名] 1.2 yum info [软件名] 1.3 yum search <关键词> 1.4 yum provides <关…

从0到1:实验室设备借用小程序开发笔记

概论 实验室设备借用小程序&#xff0c;适合各大高校&#xff0c;科技园区&#xff0c;大型企业集团的实验室设备借用流程, 通过数字化的手段进一步提升相关单位设备保障水平&#xff0c;规范实验室和设备管理&#xff0c;用户通过手机小程序扫描设备的二维码&#xff0c;可以…

1 vue防抖和限流

简介 什么是防抖 防抖&#xff08;Debouncing&#xff09;是一种前端开发中常用的技术&#xff0c;用于限制函数的执行频率。在防抖的机制下&#xff0c;一个函数在一定时间内只会执行一次&#xff0c;即使它被频繁地调用。 具体来说&#xff0c;防抖的实现方式是设置一个定…

【数据库8.0备份还原】之Percona XtraBackup

目录 Percona XtraBackup备份数据库1、Percona XtraBackup的介绍2、Percona XtraBackup安装3、Percona XtraBackup8.0的使用1.全库备份和还原2.增量备份和还原3.差异备份和还原4.差异备份和增量备份的区别5.压缩备份和还原 Percona XtraBackup备份数据库 yum源安装&#xff1a…