【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.hqwc.cn/news/417879.html

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

相关文章

HBase学习五:运维排障

1、负载均衡 1.1 Rgion迁移 在当前的HBase版本中,Region迁移虽然是一个轻量级操作,但实现逻辑依然比较复杂,≈复杂性主要表现在两个方面:其一,Region迁移过程涉及多种状态的改变;其二,迁移过程中涉及Master、ZooKeeper(ZK)以及RegionServer等多个组件的相互协调。 …

字符和ASCII编码

文章目录 一、什么是字符二、什么是ASCII编码三,怎么打印字符对应的ASCII值 提示:以下是本篇文章正文内容,下面案例可供参考 一、什么是字符 日常代码中敲写代码中,在键盘上可以敲出各种字符,如a,q&#x…

java8用新特性stream做递归处理

在平时的业务中,避免不了使用递归,比如菜单列表,区域列表等,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理。 下来…

2024年【G2电站锅炉司炉】考试报名及G2电站锅炉司炉复审考试

题库来源:安全生产模拟考试一点通公众号小程序 G2电站锅炉司炉考试报名是安全生产模拟考试一点通生成的,G2电站锅炉司炉证模拟考试题库是根据G2电站锅炉司炉最新版教材汇编出G2电站锅炉司炉仿真模拟考试。2024年【G2电站锅炉司炉】考试报名及G2电站锅炉…

LeetCode 144. 94. 145. 二叉树的前序,中序,后续遍历(详解) ੭ ᐕ)੭*⁾⁾

目录 144.二叉树的前序遍历 一. TreeSize函数的实现: 二. preOrderTree函数的实现: 三.preorderTraversal函数的实现: 最后完整代码: 94.二叉树的中序遍历: 145.二叉树的后续遍历: 经过前面的二叉树的学习&…

Spring第七天(AOP)

简介 AOP(Aspect Oriented Programing)面向切面编程,一种编程范式,指导开发者如何组织程序结构 作用 在不惊动原始设计的基础上为其进行功能增强 Spring理念:无入侵式/无侵入式 基本概念 连接点(JoinPoint) : 程序执行过程中的任意位置&a…

如何使用 OpenCV 扫描图像、查找表和时间测量

目标 我们将寻求以下问题的答案: 如何浏览图像的每个像素?OpenCV 矩阵值是如何存储的?如何衡量我们算法的性能?什么是查找表,为什么要使用它们? 我们的测试用例 让我们考虑一种简单的颜色减少方法。通过…

令牌桶算法与Guava的实现RateLimiter源码分析

令牌桶算法与Guava的实现RateLimiter源码分析 令牌桶RateLimiter简介RateLimiter使用示例导入maven依赖编写测试代码 RateLimiter的实现源码解析SmoothRateLimiterSmoothBursty恒速获取令牌acquire(int)tryAcquire(int,long,TimeUnit) 存量桶系数小结 优缺点与漏桶的区别总结 令…

Go 知识slice

Go 知识slice 1. 什么是slice2. slice 基础2.1 定义 2.2 实现原理2.2.1 make 创建2.2.2 切片 创建 2.3 操作2.3.1 append 追加2.3.2 表达式切片2.3.3 扩展表达式2.3.4 扩容2.3.5 拷贝 3. 测试一下3.1 len && cap3.2 append && 扩容3.3 切片表达式 1. 什么是sli…

Spring第六天(注解开发第三方Bean)

注解开发管理第三方Bean 显然,我们无法在第三方Bean中写入诸如service这样的注解,所以,Spring为我们提供了Bean这一注解来让我们通过注解管理第三方Bean 第二种导入方式由于可读性太低,故只介绍第一种导入方式,这里我…

外包干了5个月,技术退步明显...

先说一下自己的情况,大专生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

内网安全管理系统(保密管理系统)

在当今信息化的时代,企业的内网已经成为其核心资产的重要组成部分。 随着企业的快速发展和信息化程度的提升,内网安全问题日益凸显,如何保障内网的安全和机密信息的保密性,已经成为企业亟待解决的问题。 内网安全管理系统(保密管…