注释可以嵌套在Java中的类中吗?
我试图理解@WebMethod是如何调用此注释的注释可以嵌套在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
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()