标记注解 java_Java 注解(Annotations)

Java 注解(Annotations)

在本教程中,我们将通过示例学习什么是注解,不同的Java注解以及如何使用它们。

Java注解是我们程序源代码的元数据(有关数据的数据)。

它们向编译器提供关于程序的附加信息,但不是程序本身的一部分。这些注解不会影响已编译程序的执行。

注解以@开头。其语法为:@AnnotationName

让我们以@Override注解为例。

@Override注解指定了已标有此注解的方法重写用同样名称的方法,返回类型和参数列表中的父类的方法。

重写方法时,不是必须使用@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<>();

//这将导致未经检查的警告

wordList.add("nhooo");

System.out.println("Word list => " + wordList);

}

public static void main(String args[]) {

wordsList();

}

}

输出结果Word list => [nhooo]

如果上述程序在不使用@SuppressWarnings("unchecked")注解的情况下进行编译,则编译器仍将编译该程序,但会给出如下警告:Main.java uses unchecked or unsafe operations.

Word list => [nhooo]

我们收到警告Main.java uses unchecked or unsafe operations

因为下面的语句。

ArrayList wordList = new ArrayList<>();

这是因为我们尚未定义数组列表的通用类型。 我们可以通过在尖括号<>中指定泛型来解决此警告。ArrayList wordList = new ArrayList<>();

2.类型注解

在Java 8之前,注释只能应用于声明。现在,也可以使用类型注释。这意味着我们可以在使用类型的任何地方放置注解。

构造函数调用

new @Readonly ArrayList<>()

类型定义@NonNull String str;

此声明指定String类型的非空变量str,以避免NullPointerException。@NonNull List newList;

该声明指定String类型的非空列表。

List newList;

该声明指定String类型的非空值的列表。类型转换

newStr = (@NonNull String) str;

extends 和 implements 子句class Warning extends @Localized Message

throws子句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 反射访问的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值