Java 声明注解

来源:百度文库 编辑:神马文学网 时间:2024/04/30 01:39:41
注解其实可以看成是一个特殊的 Class 。 只不过不用关键字 class 而已, 而是用 声明@Target 说明注解使用的地方(目的地) {类上,字段上,或是方法上?? etc... }。
类上面:TYPE字段上:FIELD方法上:METHOD
@Retention 注解的生存周期(能在什么时候有效) 可选值为:源代码 ? 一直到运行时都有效 ?etc... RUNTIME 一直到运行时都有效,说明程序运行时可以通过反射得到注解的信息。

@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 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 name     * element or defaulted, is a name that is local to the application     * component using the resource.  (It's a name in the JNDI     * java:comp/env 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     * global JNDI name, but may be a name of any form.

     *     * 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 "";}