提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、@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修饰的。
总结
每天进步一点点!