志鸢
Published on 2024-12-10 / 43 Visits
0
0

Lombok:@Delegate优化代码利器



一、@Delegate 介绍

@Delegate ​可以让你的类使用其他类的方法,而不需要自己写代码

二、示例

// 一个类,有一个方法
public class A {
    public void sayHello() {
        System.out.println("Hello");
    }
}
 
// 一个类,委托了A类的方法
public class B {
    @Delegate // 委托A类的方法
    private A a = new A();
 
    public static void main(String[] args) {
        this.sayHello(); // 调用A类的方法
    }
}

有一个类叫做 A,它有一个方法叫做 sayHello(),你想让另一个类 B 也能用这个方法,那就可以在 B 类中加上一个 A 类型的字段,并在这个字段上加上 @Delegate 注解,这样,B 类就可以直接调用 sayHello()方法,就像它是自己的方法一样

以下是另一种写法

// 一个类,有一个方法
public class A {
    public void sayHello() {
        System.out.println("Hello");
    }
}
 
// 一个类,委托了A类的方法
public class B {
    @Delegate(types=A.class)
    private A a;
 
    public static void main(String[] args) {
        this.sayHello(); // 调用A类的方法
    }
}

三、使用场景

1、我们在实际编码中,会产生大量重复性的代码或者方法,如果要将其提取出来,就得新建好多额外的类出来,而且还不好归类,有时候也会跨多层目录。那么这个时候,就可以通过这种方式,在不同的地方使用同一个方法。

2、当我们在编写业务代码的时候,通常会有 service 层和 impl 层,如果要抽出来方法的话,就必须得在 service 中新增接口方法,如果是不对外的情况下,这么添加,就会暴漏出去。如果采用 @Delegate 注解的方式,就不用有这个担心了。

四、使用注意事项

通过这种方式,去调用的方法,必须得是 public 修饰的。


总结

每天进步一点点!


Comment