当前位置: 首页 > news >正文

自学习记录-编程语言的特点(持续记录)

我学习的顺序是C -> python -> C++ -> Java。在讲到某项语言的特点是,可能会时不时穿插其他语言的特点。

Java

1 注解Annotation

Python中也有类似的Decorators。以下为AI学习了解到的:

Java的Annotation是一种元数据(metadata),它提供了一种在代码中添加额外信息的方式。这些信息可以被编译器、开发工具或运行时环境读取和处理。注解本身不会直接影响代码的逻辑,但它们可以用于生成代码、配置框架、进行代码分析等。

元数据:注解是附加在代码上的元数据,用于描述代码的某些特性。
不影响代码逻辑:注解本身不会改变代码的运行逻辑,但可以通过工具或框架影响代码的行为。
广泛用途:注解可以用于编译时检查、代码生成、运行时配置等。

语法

注解以 @ 符号开头,后面跟注解的名称。注解可以带有参数,参数以键值对的形式传递

内置注解(具体要用那些,直接问AI)

Java 提供了一些内置注解,常用的包括:

  1. @Override
    用于标记方法重写了父类的方法。

如果方法没有正确重写父类的方法,编译器会报错。

  1. @Deprecated
    用于标记方法或类已过时,不推荐使用。

编译器会发出警告,提醒开发者使用替代方案。

  1. @SuppressWarnings
    用于抑制编译器警告。

例如:@SuppressWarnings(“unchecked”) 可以抑制未检查的类型转换警告。

  1. @FunctionalInterface
    用于标记接口是函数式接口(只有一个抽象方法)。

例如:Runnable 接口就是一个函数式接口。

自定义注解:

Java 允许开发者定义自己的注解。自定义注解使用 @interface 关键字定义。

案例:

import java.lang.annotation.*;// 定义一个注解
@Retention(RetentionPolicy.RUNTIME) // 注解在运行时保留
@Target(ElementType.METHOD)         // 注解只能用于方法
public @interface MyAnnotation {String value() default "default value"; // 注解的参数int count() default 1;                  // 另一个参数
}//使用自定义注解
public class MyClass {@MyAnnotation(value = "Hello", count = 3)public void myMethod() {// 方法体}
}

注解的工作原理

编译时处理:通过注解处理器(Annotation Processor)在编译时处理注解。
运行时处理:通过反射机制在运行时读取注解信息。

注解信息读取案例:
案例一:

public class MyClass {@MyAnnotation(value = "Hello", count = 3)public void myMethod() {// 方法体}public static void main(String[] args) throws Exception {Method method = MyClass.class.getMethod("myMethod");MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);if (annotation != null) {System.out.println("Value: " + annotation.value()); // 输出:Value: HelloSystem.out.println("Count: " + annotation.count()); // 输出:Count: 3}}
}

案例二:

public class MyClass {@MyAnnotation(value = "Hello", count = 3)public void myMethod() {// 通过反射访问注解信息try {// 获取当前方法的注解MyAnnotation annotation = this.getClass().getMethod("myMethod").getAnnotation(MyAnnotation.class);if (annotation != null) {System.out.println("Value: " + annotation.value()); // 输出:Value: HelloSystem.out.println("Count: " + annotation.count()); // 输出:Count: 3}} catch (NoSuchMethodException e) {e.printStackTrace();}}public static void main(String[] args) {MyClass obj = new MyClass();obj.myMethod();}
}

总结

注解是元数据:用于描述代码的特性。
内置注解:如 @Override、@Deprecated 等。
自定义注解:使用 @interface 定义。
元注解:用于修饰其他注解。
用途广泛:编译时检查、代码生成、运行时配置等。

Python

1 装饰器Decorator

类似Java的注解

http://www.lryc.cn/news/531239.html

相关文章:

  • TypeScript (TS) 和 JavaScript (JS)
  • 【HarmonyOS之旅】基于ArkTS开发(二) -> UI开发三
  • 如何选择Spring AOP的动态代理?JDK与CGLIB的适用场景?
  • 手机连接WIFI可以上网,笔记本电脑连接WIFI却不能上网? 解决方法?
  • MySQL不适合创建索引的11种情况
  • 树莓派pico入坑笔记,故障解决:请求 USB 设备描述符失败,故障码(43)
  • GRE阅读双线阅读 --青山学堂GRE全程班 包括 阅读、数学、写作、填空、背单词
  • 98,【6】 buuctf web [ISITDTU 2019]EasyPHP
  • Kamailio、MySQL、Redis、Gin后端、Vue.js前端等基于容器化部署
  • 知识管理系统助力企业信息共享与创新思维的全面提升研究
  • Leetcode 131 分割回文串(纯DFS)
  • 结构体DMA串口接收比特错位
  • 用FormLinker实现自动调整数据格式,批量导入微软表单
  • 技术架构师成长路线(2025版)
  • 独立开发者的技术栈
  • wordpress每隔24小时 随机推荐一个指定分类下的置顶内容。
  • Android13源码下载和编译过程详解
  • C++底层学习预备:模板初阶
  • 使用mybatisPlus插件生成代码步骤及注意事项
  • 扩散模型(二)
  • java异常处理——try catch finally
  • 新月军事战略分析系统使用手册
  • Docker Hub 镜像 Pull 失败的解决方案
  • SQL进阶实战技巧:如何构建用户行为转移概率矩阵,深入洞察会话内活动流转?
  • DeepSeek辅助学术写作关键词选取
  • 后盾人JS -- 原型
  • 优选算法的灵动之章:双指针专题(一)
  • BUUCTF Pwn axb_2019_brop64 题解
  • 85.[1] 攻防世界 WEB easyphp
  • 动态规划学习