Java基础(六)----注释 annotation

共分为4个类
FirstAnno.class


import java.lang.annotation.*;

@Documented 
@Inherited // 可以继承
@Retention(RetentionPolicy.RUNTIME)  // 保留策略
@Target(ElementType.TYPE) // 修饰目标
public @interface FirstAnno {
    String value() default "FirstAnno";
}

SecondAnnotation.class


import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface SecondAnnotation {
    String name() default "Hrmzone";
    String url() default "hrmzone.cn";
}

Kitto.class


import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Kitto {
    String value() default "kitto";
}

测试mian类


@FirstAnno("http://hrmzone.cn")
public class AnnoTest {

    @Kitto("测试")
    private String test = "";

    @SecondAnnotation
    public String getDefault() {
        return "get default annotation";
    }

    @SecondAnnotation(name="desktophrm", url="desktophrm.com")
    public String getDefine() {
        return "get define annotation";
    }


    public static void main (String[] args) throws ClassNotFoundException {
        Class<?> c = Class.forName("AnnoTest");
        Method[] methods = c.getMethods();
        boolean flag = c.isAnnotationPresent(FirstAnno.class);
        if ( flag ) {
            FirstAnno first = c.getAnnotation(FirstAnno.class);
            System.out.println("FirstAnno = " + first.value());
        }

        for ( Method m : methods ) {
            SecondAnnotation second = m.getAnnotation(SecondAnnotation.class);
            if ( second == null ) 
                continue;
            System.out.println("SecondAnnotation = " + second.name() + "; " + second.url());
        }

        Field[] fs = c.getDeclaredFields();
        for ( Field f : fs ) {
            Kitto kitto = f.getAnnotation(Kitto.class);
            if ( kitto == null ) 
                continue;
            System.out.println("Kitto = " + kitto.value());
        }

        Class<?> c1 = Class.forName("AnnoTestInherited";)
    }
}

class AnnoTestInherited extends AnnoTest {

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值