Groovy面向对象五

        注解

        注解是一种特殊的接口,专门用于注释代码。注解是一种超接口,是Annotation接口类型,声明注解与声明接口类似,需要使用@interface关键字。注解可以通过无主体方法的形式定义成员,并且可以选择使用default设置默认值。注解成员的类型仅限于:原始类型、字符串、类、枚举、其他注释类型,或者这些类型的数组。Groovy中注解可以改变语言的语义,尤其是AST转换,会根据注解生成代码。
@interface SomeAnnotation {
    String value()                          
}
@interface SomeAnnotation {
    String value() default 'something'      
}
@interface SomeAnnotation {
    int step()                              
}
@interface SomeAnnotation {
    Class appliesTo()                       
}
@interface SomeAnnotation {}
@interface SomeAnnotations {
    SomeAnnotation[] value()                
}
enum DayOfWeek { mon, tue, wed, thu, fri, sat, sun }
@interface Scheduled {
    DayOfWeek dayOfWeek()                   
}
        注解可以用于代码的各种元素。为了限制注解的应用范围,在定义注解时需要使用Target注解。可选的目标可以参考 ElementType。使用注解时所有没有默认值的成员都要设置值,通过“成员名=”的形式设置成员的值,如果只有一个需要设置值的成员,可以省略成“成员名=”。
@interface Page {
    String value()
    int statusCode() default 200
}

@Page(value='/home')                    
void home() {
    // ...
}

@Page('/users')                         
void userList() {
    // ...
}

@Page(value='error',statusCode=404)     
void notFound() {
    // ...
}
        注解的可见性依赖于它的保持策略,可选的保持策略可以参考 RetentionPolicy。策略的选择通常取决于您是否希望在编译时或运行时显示注释。
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy

@Retention(RetentionPolicy.SOURCE)                   
@interface SomeAnnotation {}
        Groovy中的注解有一个特性是,可以使用闭包做为注解的值。
class Tasks {
    Set result = []
    void alwaysExecuted() {
        result << 1
    }
    @OnlyIf({ jdk>=6 })
    void supportedOnlyInJDK6() {
        result << 'JDK 6'
    }
    @OnlyIf({ jdk>=7 && windows })
    void requiresJDK7AndWindows() {
        result << 'JDK 7 Windows'
    }
}

        元注解,也叫注解别名,是在编译时由其他注解替换的注解。元注解与普通注解的声明方式相同,但是由@AnnotationCollector注解和注解列表注释,Groovy支持预编译和源表单元注解。Groovy支持预编译和源表单注解,注解可以是预编译的,也可以与正在编译的源代码树放在同一源树中,元注解只能用于Groovy。当Groovy编译器遇到带有元注解的类时,会用元注解收集到的注解替换它。

        







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值