当青训营遇上码上掘金 | 主题创作活动

69 阅读2分钟

主题

我选择的主题是:"我的名片"

引言

首先,我想自我介绍不管是在职场还是生活中都是非常重要,所以我想选择"我的名片"这个主题来用代码实现,由于我大学学习的是Java语言,所以我将使用Java语言来实现,并将我的思路一一讲解给大家,如有错误请大家一定帮我指出!

实现思路

我将使用Java中非常重要的特性注解来实现"我的名片"代码,不管是在学习JavaSE的过程中还是学习JavaEE高级框架的过程中,注解总是少不了,比如常见的:@Override这是我们在学习JavaSE方法的时候常见的,它标注在方法表示此方法被重写、@Deprecated这个注解也是比较常见,比如我们在翻看JDK源码时会发现有些类和方法会使用这个注解进行标注,被它标注的方法和类都表示这个类或方法是被弃用的,不推荐使用的类或方法等等这些...

具体实现

1.使用自定义注解的方式,完成"我的名片"的注解,并给注解添加value用来标识,并给value属性赋上默认值,自定义注解有几个注意的点,@Target注解是表示这个类能标注在哪些位置,比如我就把"我的名片"设置了只能标识在类和方法上,@Target注解是每个自定义注解必不可少的,@Retention注解表示希望这个注解可以被反射,

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface myCard {
    String value() default "Hello!";
}

2.编写测试类加上"我的名片"注解,使用Java中重要的特性反射获取当前测试类的字节码文件后获取类上注解的value属性值

/**
 * 我的名片
 */
@myCard("Hello!我是吕崇其,我今年19岁,目前大二。")
public class Demo {
    public static void main(String[] args) throws ClassNotFoundException {
        //获取类的Class对象
        Class c = Class.forName("annotation.Demo");
        //获取类上的注解
        myCard m = (myCard) c.getAnnotation(myCard.class);
        //获取注解上的值
        System.out.println(m.value());
    }
}

总结

1.通过这样一个案例可以初步认识Java注解
2.学会如何自定义注解
3.学会通过反射机制获取注解中的值