Java 注释
Java 注释
在本教程中,我们将通过示例了解什么是注解、不同的 Java 注解以及如何使用它们。
Java 注解是我们程序源代码的元数据(关于数据的数据)。
它们向编译器提供有关程序的附加信息,但不是程序本身的一部分。这些注解不影响编译后程序的执行。
注解以 @
开头 .它的语法是:
@AnnotationName
我们以@Override
为例 注释。
@Override
annotation 指定已用此注解标记的方法覆盖具有相同方法名称、返回类型和参数列表的超类的方法。
不强制使用 @Override
覆盖方法时。但是,如果我们使用它,如果在覆盖方法时出现错误(例如错误的参数类型),编译器会报错。
示例 1:@Override 注解示例
class Animal {
public void displayInfo() {
System.out.println("I am an animal.");
}
}
class Dog extends Animal {
@Override
public void displayInfo() {
System.out.println("I am a dog.");
}
}
class Main {
public static void main(String[] args) {
Dog d1 = new Dog();
d1.displayInfo();
}
}
输出
I am a dog.
在这个例子中,方法 displayInfo()
存在于超类 Animal 中 和子类 Dog .调用该方法时,调用的是子类的方法,而不是超类中的方法。
注解格式
注释还可以包括元素(成员/属性/参数)。
1。标记注释
标记注释不包含成员/元素。它仅用于标记声明。
它的语法是:
@AnnotationName()
由于这些注释不包含元素,因此可以排除括号。例如,
@Override
2。单元素注释
单个元素注解只包含一个元素。
它的语法是:
@AnnotationName(elementName = "elementValue")
如果只有一个元素,则约定将该元素命名为 value .
@AnnotationName(value = "elementValue")
在这种情况下,也可以排除元素名称。元素名称将是 value 默认情况下。
@AnnotationName("elementValue")
3。多元素注解
这些注释包含多个以逗号分隔的元素。
它的语法是:
@AnnotationName(element1 = "value1", element2 = "value2")
注释放置
任何声明都可以通过将其放在该声明之上来标记注释。从 Java 8 开始,注解也可以放在类型之前。
1。以上声明
如上所述,Java注解可以放在类、方法、接口、字段和其他程序元素声明之上。
示例 2:@SuppressWarnings 注解示例
import java.util.*;
class Main {
@SuppressWarnings("unchecked")
static void wordsList() {
ArrayList wordList = new ArrayList<>();
// This causes an unchecked warning
wordList.add("programiz");
System.out.println("Word list => " + wordList);
}
public static void main(String args[]) {
wordsList();
}
}
输出
Word list => [programiz]
如果上面的程序编译不使用@SuppressWarnings("unchecked")
注解,编译器仍然会编译程序,但会给出如下警告:
Main.java uses unchecked or unsafe operations. Word list => [programiz]
我们收到警告
Main.java uses unchecked or unsafe operations
因为下面的说法。
ArrayList wordList = new ArrayList<>();
这是因为我们还没有定义数组列表的泛型。我们可以通过在尖括号 <>
内指定泛型来修复此警告 .
ArrayList<String> wordList = new ArrayList<>();
2。类型注释
在 Java 8 之前,注解只能应用于声明。现在,也可以使用类型注释。这意味着我们可以在任何使用类型的地方放置注解。
构造函数调用
new @Readonly ArrayList<>()
类型定义
@NonNull String str;
此声明指定非空变量 str String
类型 避免 NullPointerException
.
@NonNull List<String> newList;
此声明指定类型为 String
的非空列表 .
List<@NonNull String> newList;
此声明指定类型为 String
的非空值列表 .
类型转换
newStr = (@NonNull String) str;
扩展和实现子句
class Warning extends @Localized Message
抛出子句
public String readMethod() throws @Localized IOException
类型注释可以更好地分析 Java 代码并提供更强大的类型检查。
注解类型
1. 预定义注释
@Deprecated
@Override
@SuppressWarnings
@SafeVarargs
@FunctionalInterface
2. 元注释
@Retention
@Documented
@Target
@Inherited
@Repeatable
3. 自定义注解
这些注解类型在 Java 注解类型教程中有详细描述。
注解的使用
- 编译器指令 - 注释可用于向编译器提供指令、检测错误或抑制警告。内置注解
@Deprecated
,@Override
,@SuppressWarnings
用于这些目的。 - 编译时指令 - 这些注释提供的编译时指令帮助软件构建工具生成代码、XML 文件等等。
- 运行时指令 - 可以定义一些注解在运行时给程序提供指令。使用 Java 反射访问这些注释。
java