一’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();}

抽象实现类


import lombok.extern.slf4j.Slf4j;/*** 说话抽象类*/
@Slf4j
public abstract class DoSpeak implements Speak{@Overridepublic void speackByLange(String name, String lange) {log.info( name + "do " + lange);}@Overridepublic void speakNull() {log.info("speck null ...");}
}

工作类 主要

import lombok.extern.slf4j.Slf4j;/*** 工作 处理用户做接口的关系处理 这里直接引用实体的name, lanage  在实际使用中* 可以 有其他处理逻辑 如 加密解密,记录日志 , 以及转换算法 这里就简单处理了。。。*/
@Slf4j
public class Work {public void doOk(Person person, Speak speak) {if (person != null) {log.info("person:" + person.toString());speak.speackByLange("(name)" + person.getName(), "(lange)" + person.getLange());} 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() {@Overridepublic void speackByLange(String name, String lange) {System.out.println("名字:" + name + " can speak " + lange);}@Overridepublic void speakNull() {System.out.println("speack  is null "  );}});}

执行结果如下:

Java 接口作为方法参数相关推荐

  1. java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function

    文章目录 函数式接口 概念 函数式接口作为方法参数 函数式接口作为方法的返回值 常用函数式接口 Supplier接口 常用函数式接口 Consumer 函数式接口之 Predicate接口 常用接口之 ...

  2. 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)

    学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...

  3. JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类

    一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...

  4. 测试私有方法_Java基础之抽象类、接口作为方法参数和返回值

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  5. java中的方法参数

    java中的方法参数 首先回顾一下程序设计语言中有关参数传递给方法的专业术语. 按值调用:表示方法接收的是调用者提供的值. 按引用调用:表示方法接收的是调用者提供的变量地址. java中总是采用按值调 ...

  6. java——接口作为方法的参数和返回值

    接口作为方法的参数和返回值 package cn.itcast.day11.demo07;import java.util.ArrayList; import java.util.List; /* j ...

  7. Java基础二十二:函数式接口介绍,函数式接口作为方法参数、返回值,Supplier接口、Consumer接口、Predicate接口、Function接口基本介绍及其案例小练习

    函数式接口 1. 函数式接口概念及基本使用 1.函数式接口:有且仅有一个抽象方法的接口,函数式接口就是Lambda表达式使用的前提 2. Java中的函数式编程体现的就是Lambda表达式,所以函数式 ...

  8. java 接口校验接收参数_java接口参数校验

    (可扩充) 命令编号 命令名称 参数命令 提取现场机时间 上传现场机时间 设置现... 接口标准> (以下简称"接口标准" ) <数据对接接口校验规则> < ...

  9. $emit传递多个参数_10年架构师深解java核心技术:方法参数+对象构造,确定不学?...

    方法参数 首先回顾一下在程序设计语言中有关参数传递给方法(或函数)的一些专业术语.值调用(call by value)表示方法接收的是调用者提供的值.而引用调用(call by reference)表 ...

最新文章

  1. ORB_SLAM2帧Frame
  2. js 使用 Lawnchair 存储 json 对象到本地
  3. apache 服务发布多个项目,只需要更改配置文件(需要设定虚拟主机)
  4. 浅谈SAP CRM开发——技术概念、与ECC 系列产品区别
  5. 2018牛客暑假多校二 D(贪心)
  6. 《TensorFlow 2.0深度学习算法实战教材》学习笔记(三、TensorFlow 基础)
  7. Ubuntu 16.04 解压rar问题解决方案
  8. centos挂载ntfs文件系统
  9. 怎么将表中的空格都转变为0???
  10. Xcode6 部署iphone4s出现的问题 No architectures to compile for
  11. win7 IE8无法升级IE11
  12. html5新增graph,Qunee for HTML5 - 中文 : Graph组件介绍
  13. 为WINPE加入IMDISK 内存硬盘,虚拟磁盘,加速磁盘访问
  14. 大学生简单静态HTML网页模板源码——家乡介绍美丽乡村11页
  15. 大数据之Python实现每日钉钉数据自动推送
  16. Monitor(二分,二维前缀和板子记录)
  17. 中大计算机学院不及格,大学要求越来越严格 | 学渣可能无法从中大毕业了
  18. RxJava2.0的生动形象的分析
  19. 2021年煤矿井下爆破模拟试题及煤矿井下爆破考试试题
  20. 三维扫描体数据的VTK体绘制程序设计

热门文章

  1. PaddleSpeech TTS 设计要素 — 训练组件
  2. 云笔记使用的感受想法!(对有道云笔记、印象云笔记的比较与评价)
  3. 【参营经历贴】2022网安夏令营
  4. ThinkPHP 入门
  5. 工业界推荐_Industrial RS(4)
  6. 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。
  7. errrrrrrrrrr
  8. 网站浏览计数器html,Web浏览计数器的设计应用
  9. 3年Java后端开发面试题总结
  10. 《机器学习》慕课版课后习题-第5章