Java接⼝作为⽅法参数
⼀’Java 接⼝作为⽅法参数好处:
1 可以很⽅便封装起来,供调⽤者使⽤;
2 参数为接⼝类型可以实现代码解耦;
3 对调⽤者⽽⾔, ⽆需关⼼内部构造逻辑 , 只要实现调⽤相关⽅法 实现⾃⼰的下部逻辑即可,做到开箱即⽤的效果;
4 我们翻看jdk源码发现⼤量这样应⽤的代码;
...........................
下⾯我们就举例实现说明
⼆ 什么是接⼝作为⽅法参数
⽤户⼈基类,⽅法应⽤时候⽤到
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* ⽤户⼈基类
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Person {
/
**
* 名字
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 语⾔
*/
private String lange;
}
/**
*说话接⼝
*/
public interface Speak {
void speackByLange(String name, String lange);
void speakNull();
}
抽象实现类
slf4j.Slf4j;
/
**
* 说话抽象类
*/
@Slf4j
public abstract class DoSpeak implements Speak{
@Override
public void speackByLange(String name, String lange) {        log.info( name + "do " + lange);
}
@Override
public void speakNull() {
log.info("speck null ...");
}
}
⼯作类 主要
slf4j.Slf4j;
/**
* ⼯作处理⽤户做接⼝的关系处理这⾥直接引⽤实体的name, lanage  在实际使⽤中
* 可以有其他处理逻辑如加密解密,记录⽇志,以及转换算法这⾥就简单处理了。。。
*/
@Slf4j
public class Work {
public void doOk(Person person, Speak speak) {
if (person != null) {
log.info("person:" + String());
speak.speackByLange("(name)" + Name(), "(lange)" + Lange());        } else {
log.info("person is null");
speak.speakNull();
}
}
}
测试类 说明:
//重写抽象⽅法,然后具体做什么事情,重写了两种⽅法,⼀种是person不为空的情况
//另⼀种是person 为空的情况,这样我们就封装了person和 speak的内部关系,直接重写
/
/speack接⼝的⽅法,来实现我们具体的需求
//在实际应⽤中,可能要重写 success⽅法和fail⽅法,这⾥只是简单重写⼀下
public class Test001 {
public static void main(String[] args) {
Person person = Person.builder().name("tom").age(12).lange("chinese").build();
Work work = new Work();
work.doOk(person, new DoSpeak() {
@Override
public void speackByLange(String name, String lange) {
System.out.println("名字:" + name + " can speak " + lange);
}
@Override
public void speakNull() {
System.out.println("speack  is null "  );
java接口有没有构造方法}
});
}
执⾏结果如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。