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

in java what does the @ symbol mean?

我知道出于文档目的而在评论中表示什么意思,但除此之外它是什么意思? (我通常只是 google 这个,但每个非字母符号都会出现在结果中)

@符号用于annotations。根据我的经验,最常见的注释是 @Override,它表示在超类中声明了一个方法。其他常见的注释是 @Deprecated,指示不应再使用但仍然存在的方法以实现向后兼容性,以及 @SupressWarnings,以防止在编译器中出现警告。

请注意,实际上可以获得核心 Java 库中未包含的注释并声明您自己的注释。

@符号用于指定Java注解。

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

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

注解有多种用途,例如抑制警告、将方法关联到 URI (Servlet)、将变量关联到资源 (JNDI) 等

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

让我举几个例子:

@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!",对吧?好吧,派生的 class' 方法实际上拼错了,所以 DerivedClass 得到了自己单独的方法 someInterestngMethod(),与 superclass' someInterestingMethod() 完全无关。因此,someInterestingMethod() 不再被覆盖,并且调用 superclass' 实现。

@Override 关键字旨在帮助解决此问题。它向编译器表明您的意图,即您希望带注释的方法成为祖先 class 方法之一的重载。如果不是(例如在这种拼写错误的情况下,或者如果 SuperClass API 更改并重命名了方法),编译将失败,以提醒您注意损坏的覆盖。

@SuppressWarnings注解

这里有一个方法:

public void someMethod() {
    int i;
}

编译器会警告说 i 从未使用过。因此,您可以将 @SuppressWarnings 添加到方法中以 抑制 警告:

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

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

您也可以声明自己的注释并使用反射来检查它们。以上2个注解会被编译器检查

正如其他人所说,这是 Java 的注释。它有助于编译器验证您的代码并通知程序员。

非常简单的代码示例:

public class SomeClass {

    @Override
    public String toString() {
        return "SomeClass";
    }

    @Deprecated
    public void doSomeOperation() {
        // some operation...
    }
}

来自SomeClass#toString的注释@Override帮助编译器确定它是从隐式继承到classObject的重写函数。

虽然来自 SomeClass#doSomeOperation 的注释会警告程序员该函数本身已被弃用,应避免使用。

注释用于 reader 或编译器,而不是可执行代码。

@符号表示注释。它们提供有关 class、其字段或方法(它们出现在其上方)的信息。他们无法执行操作。编译器或特殊注释处理器使用此信息使编写的代码不那么冗长。

在 Java 持久性 API 中,您使用它们将 Java class 与数据库 table 映射。

例如 @Table() 用于将特定 Java class 映射到日期基准 table.

@实体 表示 class 是一个实体 class.

同样,您可以使用许多注释来映射各个列、生成 ID、生成版本、关系等。