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

我学习的顺序是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: Hello
            System.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: Hello
                System.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的注解

你可能感兴趣的:(学习,python,java,c++,c语言)