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();}
抽象实现类
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 接口作为方法参数相关推荐
- java新特性-函数式接口-作为方法参数-作为方法的返回值-常用函数式接口-Supplier-Consumer-Predicate-Function
文章目录 函数式接口 概念 函数式接口作为方法参数 函数式接口作为方法的返回值 常用函数式接口 Supplier接口 常用函数式接口 Consumer 函数式接口之 Predicate接口 常用接口之 ...
- 重学Java(035)——Java基础知识(类作为成员变量、接口作为成员变量、接口作为方法参数和返回值类型)
学习内容:三种引用类型用法 一.类作为成员变量 二.接口作为成员变量 三.接口作为方法参数和返回值类型 实际的开发中,引用类型的使用非常重要,也是非常普遍的.我们可以在理解基本类型的使用方式基础上,进 ...
- JAVA学习笔记第八天——接口作为方法参数和返回值、多态、内部类
一.回顾: 权限修饰符: public -> protected -> (default) ->private 重写: 1.方法名和参数列表一致 2.子类中重写的方法, 返回值类型[ ...
- 测试私有方法_Java基础之抽象类、接口作为方法参数和返回值
不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...
- java中的方法参数
java中的方法参数 首先回顾一下程序设计语言中有关参数传递给方法的专业术语. 按值调用:表示方法接收的是调用者提供的值. 按引用调用:表示方法接收的是调用者提供的变量地址. java中总是采用按值调 ...
- java——接口作为方法的参数和返回值
接口作为方法的参数和返回值 package cn.itcast.day11.demo07;import java.util.ArrayList; import java.util.List; /* j ...
- Java基础二十二:函数式接口介绍,函数式接口作为方法参数、返回值,Supplier接口、Consumer接口、Predicate接口、Function接口基本介绍及其案例小练习
函数式接口 1. 函数式接口概念及基本使用 1.函数式接口:有且仅有一个抽象方法的接口,函数式接口就是Lambda表达式使用的前提 2. Java中的函数式编程体现的就是Lambda表达式,所以函数式 ...
- java 接口校验接收参数_java接口参数校验
(可扩充) 命令编号 命令名称 参数命令 提取现场机时间 上传现场机时间 设置现... 接口标准> (以下简称"接口标准" ) <数据对接接口校验规则> < ...
- $emit传递多个参数_10年架构师深解java核心技术:方法参数+对象构造,确定不学?...
方法参数 首先回顾一下在程序设计语言中有关参数传递给方法(或函数)的一些专业术语.值调用(call by value)表示方法接收的是调用者提供的值.而引用调用(call by reference)表 ...
最新文章
- ORB_SLAM2帧Frame
- js 使用 Lawnchair 存储 json 对象到本地
- apache 服务发布多个项目,只需要更改配置文件(需要设定虚拟主机)
- 浅谈SAP CRM开发——技术概念、与ECC 系列产品区别
- 2018牛客暑假多校二 D(贪心)
- 《TensorFlow 2.0深度学习算法实战教材》学习笔记(三、TensorFlow 基础)
- Ubuntu 16.04 解压rar问题解决方案
- centos挂载ntfs文件系统
- 怎么将表中的空格都转变为0???
- Xcode6 部署iphone4s出现的问题 No architectures to compile for
- win7 IE8无法升级IE11
- html5新增graph,Qunee for HTML5 - 中文 : Graph组件介绍
- 为WINPE加入IMDISK 内存硬盘,虚拟磁盘,加速磁盘访问
- 大学生简单静态HTML网页模板源码——家乡介绍美丽乡村11页
- 大数据之Python实现每日钉钉数据自动推送
- Monitor(二分,二维前缀和板子记录)
- 中大计算机学院不及格,大学要求越来越严格 | 学渣可能无法从中大毕业了
- RxJava2.0的生动形象的分析
- 2021年煤矿井下爆破模拟试题及煤矿井下爆破考试试题
- 三维扫描体数据的VTK体绘制程序设计