1

この注釈がどのように呼び出されるかを理解しようとしています @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();
}

私のインポートjavax.jws.WebMethodによると、Javaドキュメント
http://docs.oracle.com/javase/7/docs/api/javax/jws/WebMethod.html
public @interface WebMethodに記載されています。

@WebMethod アノテーションは WebMethod クラスとして定義されていますか?
WebMethod クラスのソース コードは次のようなものでしょうか。

Public class WebMethod{
   //members
   //methods
  public @interface WebMethod{ //annotation definition in class, is this possible
  }
}

そうでない場合は、簡単な例でどのように行うか教えてください。

4

2 に答える 2

2

いいえ、リンク先のJavadocにあるように、これは次のように定義されています

@Retention(value=RUNTIME)
@Target(value=METHOD)
public @interface WebMethod

したがって、これはメソッド (@Target(value=METHOD)) に付ける注釈 (@interface) です。

@WebMethod は @WebService に「ネスト」されていません。これらは 2 つの独立したアノテーションです (もちろん、連携して動作します)。1 つはメソッドに適用され、もう 1 つはクラスに適用され、@Target によって定義されます。

于 2013-07-16T12:13:16.393 に答える