注释可以嵌套在Java中的类中吗?

注释可以嵌套在Java中的类中吗?,java,class,interface,annotations,Java,Class,Interface,Annotations,我试图理解@WebMethod是如何调用此注释的 import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.soap.SOAPBinding; import javax.jws.soap.SOAPBinding.Style; @WebService //<----- is this annotation nested in WebService class @SOAPBinding

我试图理解@WebMethod是如何调用此注释的

import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService          //<----- is this annotation nested in WebService class
@SOAPBinding(style = Style.RPC)
public interface TimeServer {


    @WebMethod String getTimeAsString();  //<-------is this nested in a class too
    @WebMethod long getTimeAsElapsed();
}

如果不是这样,请让我用一个简单的例子来说明它是如何做到的。

不,就像您链接到的Javadoc中所说的,这被定义为

@Retention(value=RUNTIME)
@Target(value=METHOD)
public @interface WebMethod
这是一个注释(@interface),放在一个方法(@Target(value=method))上


@WebMethod并没有“嵌套”到@WebService中,这是两个独立的注释(当然,它们协同工作)。一个在方法上,另一个在类上,这是由@Target定义的。

而在这个特定实例中,情况似乎并非如此,我遇到了相同的问题,即内部注释是否正确

根据我的实验,这是有效的

注释定义:

// pkg2/I.java
package pkg2;

import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Retention;

public final class I {
    private I(){
    }
    @Retention(RetentionPolicy.RUNTIME)
    public static @interface Inner {}
}
用法:

// pkg/C.java
package pkg;

import pkg2.I;

@I.Inner
public class C {
    public static void main(String[] args) throws Exception {
         System.out.println(C.class.getAnnotation(I.Inner.class));
    }
}
运行:

$ java pkg/C
@pkg2.I$Inner()

外部类的作用是什么?它是import javax.jws.WebMethod,嵌套了注释i repeat。外部类将完成什么?你还没有回答。
$ java pkg/C
@pkg2.I$Inner()