在java中@符号是什么意思?

2022-08-31 12:55:21

我知道出于文档目的,它在注释中的含义,但除此之外,它意味着什么?(我通常只是谷歌这个,但每个非字母符号都会显示在结果中)


答案 1

该符号表示 Java 注释。Java 注释的作用是,它向变量、方法、类、接口或其他语言元素添加特殊属性。(这可以在声明注释时进行配置)当您向某物添加批注时,程序的其他部分可以检查某物是否具有批注。然后,它可以使用这些信息来做他们需要的任何事情。@

让我举几个例子:

注释@Override

public class SuperClass {
    public void someInterestingMethod() {
        System.out.println("Superclass!");
    }
}

public class DerivedClass extends SuperClass {
    public void someInterestngMethod() {
        System.out.println("Derived class!");
    }
}

当您执行此操作时:

SuperClass sc = new DerivedClass();
sc.someInterestingMethod();

呼叫应该动态调度,并打印,对吧?好吧,派生类的方法实际上是拼写错误的,所以得到了它自己的独立方法,称为,与超类完全无关。因此,不再被覆盖,并且调用超类的实现。someInterestingMethod()"Derived class!"DerivedClasssomeInterestngMethod()someInterestingMethod()someInterestingMethod()

关键字旨在帮助您做到这一点。它向编译器发出您的意图信号,您希望带注释的方法成为祖先类方法之一的重载。如果不是(例如,在此拼写错误情况下,或者如果 API 更改并重命名了该方法),则编译将失败,以提醒您注意损坏的覆盖。@OverrideSuperClass

注释@SuppressWarnings

这是一个方法:

public void someMethod() {
    int i;
}

将有一个编译器警告,说永远不会使用。因此,您可以将 添加到该方法以禁止显示警告:i@SuppressWarnings

@SuppressWarnings("unused")
public void someMethod() {
    int i;
}

请注意,批注中有一个参数。有些注释有参数,你可以在javadoc中查找它们。但是对于那些没有参数的人,你不需要像方法一样添加。@SuppressWarnings()

您还可以声明自己的批注,并使用反射来检查它们。上述2个注释将由编译器检查。


答案 2

@ 符号用于指定 Java 注释。

https://en.wikipedia.org/wiki/Java_annotation

有内置的Java注释和用户定义的自定义注释。

注释以各种方式使用,例如抑制警告,将方法与URI(Servlet),将变量与资源(JNDI)相关联等


推荐