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

Vic*_*444 41 java symbols

我知道在评论中出于文档目的意味着什么,但除此之外是什么意思?(我通常会谷歌这个,但每个非字母符号出现在结果中)

Swe*_*per 36

@符号表示Java Annotation.Java注释的作用是,它为变量,方法,类,接口或其他语言元素添加了一个特殊属性.(可以在声明注释时配置)当您向某些内容添加注释时,程序的其他部分可以检查某些内容是否具有注释.然后它可以使用这些信息来做他们需要的任何事情.

我举几个例子:

@Override注释:

public class SuperClass {
    public void someMethod () {
        System.out.println ("Superclass!");
    }
}

public class DerivedClass extends SuperClass {
    @Override
    public void someMethod () {
        System.out.println ("Derived class!");
    }
}
Run Code Online (Sandbox Code Playgroud)

当你这样做:

SuperClass sc = new DerivedClass ();
sc.someMethod ();
Run Code Online (Sandbox Code Playgroud)

它会执行someMethodin SuperClass,对吗?不会.它会打印"Derived class!".这是因为在派生类中,有这个@Override东西.因此派生类会覆盖超类someMethod.

@SuppressWarnings注释:

这是一个方法:

public void someMethod () {
    int i;
}
Run Code Online (Sandbox Code Playgroud)

会有一个编译器警告说i从未使用过.所以你可以添加@SuppressWarnings到方法来抑制警告:

@SuppressWarnings ("unused")
public void someMethod () {
    int i;
}
Run Code Online (Sandbox Code Playgroud)

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

您还可以声明自己的注释并使用反射来检查它们.编译器将检查上述2个注释.

  • `@ Override`对于覆盖示例中的方法不是必需的; 这个例子即使删除了`@Override`也能工作.存在"@覆盖"以向读者指示方法被覆盖,并且还确保覆盖该方法.例如,如果您在子类'方法名称中输入了拼写错误,那么您的方法将不会覆盖超类'方法(因为它的名称不同).通常情况下这是可以的,但是如果你用`@Override`注释它,就会出现编译器错误,告诉你它期望一个被覆盖的方法. (53认同)

Abe*_*how 10

@符号用于指定Java Annotation.

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

有内置的Java Annotation和用户定义的Custom Annotation.

注释以各种方式使用,例如抑制警告,将方法关联到URI(Servlet),将变量关联到资源(JNDI)等


Cha*_*cer 6

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

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