在Java中,有一些内置的(或称为“基础”)注解(annotation),这些注解在Java标准库中定义,并且具有特定的用途。以下是一些主要的Java内置注解:
- @Override: - 用于表示一个方法是重写了父类的方法。
- 如果在子类中声明的方法并没有重写父类中的任何方法,编译器会报错。
- 这是一个标记注解,没有关联任何元素。
 
- @Deprecated: - 用于表示某个类或方法已经过时,建议开发者避免使用它。
- 编译器在编译时会给出警告,告知该元素已过时。
- 这是一个标记注解,也可以与since元素一起使用,以指定替代项或替代方法的版本。
 
- @SuppressWarnings: - 用于告诉编译器忽略指定的警告。
- 它可以用于类、方法或字段。
- 通常与特定的警告键(如"unchecked"、"deprecation"等)一起使用。
 
- @SafeVarargs: - 用于泛型方法或构造函数,以告诉编译器不要对使用泛型参数变量的方法或构造函数发出"unchecked"警告。
- 这是一个标记注解,通常与泛型方法一起使用。
 
- @FunctionalInterface: - 用于声明接口是函数式接口,即接口中只能有一个抽象方法(除了默认方法和静态方法之外)。
- 如果接口不符合函数式接口的要求(即存在多个抽象方法),编译器会报错。
- 这是一个标记注解,没有关联任何元素。
 
- @Retention: - 用于指定注解的保留策略。
- 这是一个元注解(用于注解其他注解的注解),有三个可能的值:SOURCE(只在源码中存在,编译时被丢弃)、CLASS(在字节码文件中存在,但JVM运行时丢弃)、RUNTIME(在JVM运行时保留,可以通过反射读取)。
 
- @Target: - 用于指定注解可以用于哪些Java元素。
- 这也是一个元注解,可能的值包括ElementType枚举中的常量,如TYPE(类、接口、注解类型或枚举声明)、METHOD(方法声明)、FIELD(字段声明)等。
 
- @Documented: - 用于表示该注解应该被javadoc和类似的工具记录。
- 默认情况下,javadoc不包含注解。但是,如果注解被标记为@Documented,那么javadoc就会包含它。
 这是一个标记注解。
 
- @Inherited: - 表示一个注解类型被自动继承。
- 如果一个使用了@Inherited注解的类型被用于一个类,则这个注解也被用于该类的所有子类。
- 这是一个标记注解。
 
- @Native: - 这是Java NIO包中的一个注解,用于标记本地方法。在Java 9及以后的版本中,它已经被标记为过时(deprecated),并被 @Native(在java.lang.annotation包中)取代,但用途和效果有所不同。在Java NIO中,@Native通常与ByteBuffer等类一起使用,表示该方法是一个本地方法,直接调用操作系统的API。
 
注意:Java中的内置注解主要用于元数据编程、文档生成、编译时检查等目的。开发者还可以创建自定义注解,以满足特定的需求。