Java注解使用笔记

注解的创建

注解的使用方式

方式一 优化代码结构,抽离属性配置到子类

说明:

通过注解可以很好的优化代码结构,常见的,我们可以通过使用AOP切面优化代码结构,使得代码结构进行解耦将一些重复的非业务型的代码进行拆解,使得代码编写专注于代码的业务逻辑,这

知识点:

  • 对象本身可以访问类对象
  • 通过类对象可以获取类注解
  • 子类实例化时,父类的构造方法会被调用
package com.wzk.annotion;

import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)//执行时注解
@Documented
public @interface BeanInfo {
    /**
     * @return 类表述
     */
    String value();
}
package com.wzk.annotion;

/**
 * @ClassDescription: com.wzk.annotion.BaseBean
 * @Content: 基础类,需要子类实现
 * @Author: wang.zuokuan
 * @Since: 2021/8/3 11:21
 */
public abstract class BaseBean {

    /**
     * 类表述
     * 因为是final类型,所以必须进行初始化,我们可以将初始化的过程降级到构造方法执行时候,或则构造方法执行以前
     */
    protected static final String[] classDesc = new String[1];

    {
        System.out.println("A-内部自身匿名类");
        if (classDesc[0] == null || classDesc[0].equals("")){
            synchronized (BaseBean.class){
                Class<?> clazz = getClass();
                if (classDesc[0] == null || classDesc[0].equals("")) {
                    BeanInfo declaredAnnotation = clazz.getDeclaredAnnotation(BeanInfo.class);
                    classDesc[0] = declaredAnnotation.value();
                    System.out.println("B-初始化classDesc的值");
                }
            }
        }
    }
    /**
     * 初始化时候,加载bean的信息
     */
    protected BaseBean() {
        System.out.println("C-构造函数");
    }

    public String getClassDesc() {
        return classDesc[0];
    }
}
package com.wzk.annotion;

@BeanInfo("这是一个学生类")
public class Student extends BaseBean {

    public Student() {
        System.out.println("D-Student 构造函数");
    }

    public static void main(String[] args) {
        Student student = new Student();
        Student student2 = new Student();
        String classDesc = student.getClassDesc();
        System.out.println(classDesc);
    }


}

结果打印

A-内部自身匿名类
B-初始化classDesc的值
C-构造函数
D-Student 构造函数
A-内部自身匿名类
C-构造函数
D-Student 构造函数
这是一个学生类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值