在java中@符号是啥意思?
Posted
技术标签:
【中文标题】在java中@符号是啥意思?【英文标题】:in java what does the @ symbol mean?在java中@符号是什么意思? 【发布时间】:2015-10-27 14:38:30 【问题描述】:我知道它在用于文档目的的评论中意味着什么,但除此之外它还意味着什么? (我通常会用谷歌搜索,但结果中会显示每个非字母符号)
【问题讨论】:
***.com/questions/24221/java-annotations ***.com/questions/19551022/the-symbol-in-java How to get a nice URL like "http://***.com/questions/1074/asp-mvc" 的可能副本 你可以在谷歌搜索java At
而不是java @
What does the @ sign means in java?
【参考方案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!"
,对吗?好吧,派生类的方法实际上拼错了,所以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个注解会被编译器检查。
【讨论】:
@Alexander-ReinstateMonica 我不知道为什么我这么长时间都忘了修复这个问题,但是有人再次否决了这个问题,这让我想起了五年前我已经发布了这个特别的答案。 ..现在它已经修复了:) 嘿,感谢您解决这个问题。你介意我建议编辑吗?我有一个例子可以更好地反映@Override
的实用性
哦,我的编辑未经批准立即显示:|高声望的诅咒哈哈。你能告诉我你的想法吗?如果您认为合适,请随意调整/恢复***.com/posts/31822268/revisions
很高兴我能帮上忙 :) 删除了我现在不相关的评论【参考方案2】:
@符号用于指定Java Annotation。
https://en.wikipedia.org/wiki/Java_annotation
有内置的 Java 注释和用户定义的自定义注释。
注解的使用方式多种多样,例如抑制警告、将方法关联到 URI (Servlet)、将变量关联到资源 (JNDI) 等
【讨论】:
【参考方案3】:@ 符号用于annotations。以我的经验,最常见的注解是@Override
,它表示在超类中声明了一个方法。其他常见的注解是@Deprecated
,表示一个方法不应再被使用,但为了向后兼容而仍然存在,以及@SupressWarnings
,以防止警告出现在编译器中。
请注意,实际上可以获取核心 Java 库中未包含的注解并声明您自己的注解。
【讨论】:
【参考方案4】:@ 符号表示注解。它们提供有关类、其字段或方法的信息(它们出现在上面)。他们无法执行操作。编译器或特殊注释处理器使用此信息来减少编写代码的冗长。
在 Java Persistence API 中,您可以使用它们将 Java 类映射到数据库表。
例如 @桌子() 用于将特定的 Java 类映射到日期基表。
@实体 表示该类是一个实体类。
同样,您可以使用许多注释来映射各个列、生成 id、生成版本、关系等。
【讨论】:
【参考方案5】:正如其他人所暗示的,它是 Java 的注解。它可以帮助编译器验证您的代码并通知程序员。
非常简单的代码示例:
public class SomeClass
@Override
public String toString()
return "SomeClass";
@Deprecated
public void doSomeOperation()
// some operation...
来自SomeClass#toString
的注释@Override
有助于编译器确定它是从隐式继承到类Object
的重写函数。
虽然来自SomeClass#doSomeOperation
的注释会警告程序员该函数本身已被弃用,应避免使用。
【讨论】:
【参考方案6】:注解供读者或编译器使用,而不是可执行代码。
【讨论】:
这是不正确的;注解可以保存在编译后的字节码中,可以在运行时读取和使用。一些框架,如 Spring Framework 和 Java EE,经常使用它。以上是关于在java中@符号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章