南阳网站营销外包公司,外贸网站排行榜前十名,如何做网站赚流量钱,请问那个网站做推广好点文章目录 1.什么是注解2.元注解1#xff09;定义2#xff09;分类 3.内置注解4.自定义注解5.注解的基本语法6.验证注解是否生效7.注解的使用场景8.注解的注意事项结语 1.什么是注解 注解#xff08;Annotation#xff09;可以理解成一种特殊的 “注释” 注解定义时以 符号… 文章目录 1.什么是注解2.元注解1定义2分类 3.内置注解4.自定义注解5.注解的基本语法6.验证注解是否生效7.注解的使用场景8.注解的注意事项结语 1.什么是注解 注解Annotation可以理解成一种特殊的 “注释” 注解定义时以 符号开头可以写在包、类、构造方法、方法、字段等元素上为这些元素提供额外的信息。
如下图 我们为实体类 User 添加了 两个 Lombok 的注解用以为属性增加 set 和 get 方法
2.元注解
1定义 元注解meta-annotation是用于注解其他注解的注解 这个听起来或许有一点绕这些是注解的基础它们用于提供注解拥有哪些行为信息。
如下图Lombok 在定义 Getter 的时候使用了两个元注解 Target 和 Retention
2分类 Target 用于指定注解可以应用的程序元素类型包括 TYPE类、接口、枚举、FIELD字段、METHOD方法等。如果没有 Target 注解注解可以应用于任何程序元素。 Target(ElementType.TYPE)
public interface DemoAnnotation {// 注解的定义
}Retention 用于指定注解的生命周期即注解在何时有效。可以有三个值SOURCE源代码时有效、CLASS编译时有效默认值、RUNTIME运行时有效90% 使用的都是 RUNTIME。 Retention(RetentionPolicy.RUNTIME)
public interface DemoAnnotation {// 注解的定义
}Documented 用于指定注解是否包含在 Javadoc 文档中。如果一个注解使用了 Documented那么它将会被包含在生成的文档中。 Documented
public interface DemoAnnotation {// 注解的定义
}Inherited 用于指定一个注解是否具有继承性。如果一个类使用了带有 Inherited 的注解并且其子类没有使用相同的注解那么子类将继承父类的注解。 Inherited
public interface DemoAnnotation {// 注解的定义
}Repeatable 用于指定注解是否可以重复应用于同一程序元素。如果一个注解使用了 Repeatable则可以在同一程序元素上多次使用该注解。 Repeatable(MyAnnotations.class)
public interface MyAnnotation {// 注解的定义
}public interface MyAnnotations {MyAnnotation[] value();
}上述元注解用于控制注解的行为提供了更多的灵活性和可定制性。这些元注解的组合使得我们可以更加精细地定义和使用注解以满足不同的需求。
3.内置注解
Java 提供了一些内置的注解它们具有特殊的含义和用途。其中几个常用的内置注解包括
Override 用于标记一个方法是覆盖父类的方法。Deprecated 用于标记已经过时的方法等提醒开发者不再使用。SuppressWarnings 用于抑制编译器警告。
4.自定义注解
除了使用内置注解我们还可以定义自己的注解。自定义注解使用 interface 关键字并且可以定义元素成员变量等。
例如
Documented
Target(ElementType.TYPE)
Retention(RetentionPolicy.RUNTIME)
interface ClassInfoAnnotation {String author();String version() default 1.0.0;String description();
}上述代码定义了一个名为 ClassInfoAnnotation 的注解它有三个元素author version 和 description。
5.注解的基本语法
interface 注解名 {
}
**示例代码**这里使用上一步自定义的注解
ClassInfoAnnotation(author Cheney, description This class is Hello)
class Test {public void sayHello(){System.out.println(hello);}
}在 Test 类上应用了 ClassInfoAnnotation 这个注解并为元素 author 和 description 赋了值version 使用默认值。
6.验证注解是否生效
在上面两个步骤中我们定义了一个自己的注解 ClassInfoAnnotation也在 Test 类上应用了那么这个注解是否生效了呢是否可以帮助我们做一些事情呢 例如打印类的信息authorversiondescription 示例代码 public static void main(String[] args) {// 获取类上的注解ClassInfoAnnotation anno Test.class.getAnnotation(ClassInfoAnnotation.class);// 打印注解信息System.out.println(Author: anno.author());System.out.println(Version: anno.version());System.out.println(Description: anno.description());}输出结果
Author: Cheney Version: 1.0.0 Description: This class is Hello
7.注解的使用场景
文档生成 注解可以用于生成文档例如 Java 中的 Javadoc 工具。编译时检查 注解可以用于在编译时进行静态检查提供更严格的类型检查。运行时处理 注解可以在运行时通过反射进行处理实现动态操作。代码分析工具 注解可以被代码分析工具用来检查和验证代码。框架和库 许多框架和库使用注解来配置和扩展功能例如 Spring 框架中的注解驱动开发。
8.注解的注意事项
注解本身并不影响程序的实际逻辑它只是提供了一些额外的元数据信息。注解可以包含元素元素的值可以是基本类型、字符串、枚举、注解或以上类型的数组。注解的使用需要通过反射或其他工具进行处理。注解的定义和使用应遵循一定的规范和命名规则。
结语
Java 注解是一种强大的元数据机制它在代码中提供了一种轻量级的、结构化的方式来添加额外的信息。通过合理地使用注解开发者可以提高代码的可读性、可维护性并在一些特定场景中实现更加灵活和强大的功能。