在 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、生成版本、关系等。
我知道出于文档目的而在评论中表示什么意思,但除此之外它是什么意思? (我通常只是 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、生成版本、关系等。