【发布时间】:2015-10-27 14:38:30
【问题描述】:
我知道它在用于文档目的的评论中意味着什么,但除此之外它还意味着什么? (我通常会用谷歌搜索,但结果中会显示每个非字母符号)
【问题讨论】:
-
你可以在谷歌搜索
java At而不是java @
我知道它在用于文档目的的评论中意味着什么,但除此之外它还意味着什么? (我通常会用谷歌搜索,但结果中会显示每个非字母符号)
【问题讨论】:
java At而不是java @
@ 符号表示 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!",对吗?好吧,派生类的方法实际上拼错了,所以DerivedClass 有自己的独立方法someInterestngMethod(),与超类的someInterestingMethod() 完全无关。因此,someInterestingMethod() 不再被覆盖,并且超类的实现被调用。
@Override 关键字旨在帮助解决此问题。它向编译器表明您的意图,即您希望带注释的方法成为祖先类方法之一的重载。如果不是(例如在这种拼写错误的情况下,或者如果 SuperClass API 更改并重命名了该方法),您的编译将失败,以提醒您注意损坏的覆盖。
@SuppressWarnings 注解这是一个方法:
public void someMethod() {
int i;
}
会有一个编译器警告说i 从未使用过。因此,您可以将@SuppressWarnings 添加到方法中以抑制警告:
@SuppressWarnings("unused")
public void someMethod() {
int i;
}
注意@SuppressWarnings注解有一个参数。一些注解有参数,您可以在 javadoc 中查找它们。但是对于那些没有参数的你不需要像方法一样添加()。
您还可以声明自己的注释并使用反射来检查它们。以上2个注解会被编译器检查。
【讨论】:
@Override 的实用性
@符号用于指定Java Annotation。
https://en.wikipedia.org/wiki/Java_annotation
有内置的 Java 注释和用户定义的自定义注释。
注解的使用方式多种多样,例如抑制警告、将方法关联到 URI (Servlet)、将变量关联到资源 (JNDI) 等
【讨论】:
@ 符号用于annotations。以我的经验,最常见的注解是@Override,它表示在超类中声明了一个方法。其他常见的注解是@Deprecated,表示一个方法不应再被使用,但为了向后兼容而仍然存在,以及@SupressWarnings,以防止警告出现在编译器中。
请注意,实际上可以获取核心 Java 库中未包含的注解并声明您自己的注解。
【讨论】:
@ 符号表示注解。它们提供有关类、其字段或方法的信息(它们出现在上面)。他们无法执行操作。编译器或特殊注释处理器使用此信息来减少编写代码的冗长。
在 Java Persistence API 中,您可以使用它们将 Java 类映射到数据库表。
例如 @桌子() 用于将特定的 Java 类映射到日期基表。
@实体 表示该类是一个实体类。
同样,您可以使用许多注释来映射各个列、生成 id、生成版本、关系等。
【讨论】:
正如其他人所暗示的,它是 Java 的注解。它可以帮助编译器验证您的代码并通知程序员。
非常简单的代码示例:
public class SomeClass {
@Override
public String toString() {
return "SomeClass";
}
@Deprecated
public void doSomeOperation() {
// some operation...
}
}
来自SomeClass#toString 的注释@Override 有助于编译器确定它是从隐式继承到类Object 的重写函数。
虽然来自SomeClass#doSomeOperation 的注释会警告程序员该函数本身已被弃用,应避免使用。
【讨论】:
注解供读者或编译器使用,而不是可执行代码。
【讨论】: