Lombok的注解@Delegate使用demo
carl 10/31/2023 javaLombok
@Delegate注解可以用于生成委托方法,将指定对象的方法委托给当前类。下面是一个使用@Delegate注解的示例:
import lombok.experimental.Delegate;
public class Printer implements Printable {
@Delegate private final Printable delegate;
public Printer(Printable delegate) {
this.delegate = delegate;
}
@Override
public void print(String message) {
System.out.println("Before printing");
delegate.print(message);
System.out.println("After printing");
}
public static void main(String[] args) {
Printable printer = new Printer(new ConsolePrinter());
printer.print("Hello, World!");
}
}
interface Printable {
void print(String message);
}
class ConsolePrinter implements Printable {
@Override
public void print(String message) {
System.out.println("Printing: " + message);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
在上面的例子中,我们定义了一个Printer类实现Printable接口,并使用@Delegate注解将Printable接口的方法委托给delegate字段。通过这样的方式,Printer类会自动继承Printable接口的方法,并将其转发给delegate对象进行实际的处理。
在Printer类的print()方法中,我们可以在调用委托方法前后添加额外的逻辑,以实现对打印操作的控制。在main()方法中,我们创建了一个Printer对象,并调用print()方法,实际上会执行ConsolePrinter对象的print()方法。
通过@Delegate注解,我们可以方便地实现代码复用和委托模式,避免重复编写相似的委托方法。