2015-11-06 96 views
0

我很少寫註釋,但它在java框架中很少使用。ann註解方法接受參數?

我調查標註來源和我有一個問題

所有我所看到的標註方法來源不接受參數。

示例(從彈簧MVC):

@Target({TYPE, FIELD, METHOD}) 
@Retention(RUNTIME) 
public @interface Resource { 
    /** 
    * The JNDI name of the resource. For field annotations, 
    * the default is the field name. For method annotations, 
    * the default is the JavaBeans property name corresponding 
    * to the method. For class annotations, there is no default 
    * and this must be specified. 
    */ 
    String name() default ""; 

    /** 
    * The name of the resource that the reference points to. It can 
    * link to any compatible resource using the global JNDI names. 
    * 
    * @since Common Annotations 1.1 
    */ 

    String lookup() default ""; 

    /** 
    * The Java type of the resource. For field annotations, 
    * the default is the type of the field. For method annotations, 
    * the default is the type of the JavaBeans property. 
    * For class annotations, there is no default and this must be 
    * specified. 
    */ 
    Class<?> type() default java.lang.Object.class; 

    /** 
    * The two possible authentication types for a resource. 
    */ 
    enum AuthenticationType { 
      CONTAINER, 
      APPLICATION 
    } 

    /** 
    * The authentication type to use for this resource. 
    * This may be specified for resources representing a 
    * connection factory of any supported type, and must 
    * not be specified for resources of other types. 
    */ 
    AuthenticationType authenticationType() default AuthenticationType.CONTAINER; 

    /** 
    * Indicates whether this resource can be shared between 
    * this component and other components. 
    * This may be specified for resources representing a 
    * connection factory of any supported type, and must 
    * not be specified for resources of other types. 
    */ 
    boolean shareable() default true; 

    /** 
    * A product specific name that this resource should be mapped to. 
    * The name of this resource, as defined by the <code>name</code> 
    * element or defaulted, is a name that is local to the application 
    * component using the resource. (It's a name in the JNDI 
    * <code>java:comp/env</code> namespace.) Many application servers 
    * provide a way to map these local names to names of resources 
    * known to the application server. This mapped name is often a 
    * <i>global</i> JNDI name, but may be a name of any form. <p> 
    * 
    * Application servers are not required to support any particular 
    * form or type of mapped name, nor the ability to use mapped names. 
    * The mapped name is product-dependent and often installation-dependent. 
    * No use of a mapped name is portable. 
    */ 
    String mappedName() default ""; 

    /** 
    * Description of this resource. The description is expected 
    * to be in the default language of the system on which the 
    * application is deployed. The description can be presented 
    * to the Deployer to help in choosing the correct resource. 
    */ 
    String description() default ""; 
} 

可以註釋methood接受參數?

回答

5

簡短回答:否

註釋實際上沒有方法。它們具有屬性(具有可選的默認值),它們在語法上類似於方法。

+0

長答案呢? – gstackoverflow

+0

您可以添加更多與params語義相似的屬性。我的意思是像@MyAnnotation(myMethodLikeAttribute =「maybeNotStringButBoolean」,myParamLikeAttribute1 =「paramVal1」,myParamLikeAttribute2 =「paramVal2」) – erosb

相關問題