在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中@符号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

java中这个符号“=”是啥意思?

在 IntelliJ IDEA 中调试 Java 期间生成的变量名称中的美元符号是啥意思?是闭包吗?

“找不到符号”或“无法解析符号”错误是啥意思?

“找不到符号”或“无法解析符号”错误是啥意思?

“找不到符号”或“无法解析符号”错误是啥意思?

“找不到符号”或“无法解析符号”错误是啥意思?