Scala中如何实现Trait的调用链
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容主要讲解"Scala中如何实现Trait的调用链",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Scala中如何实现Trait的调用链"吧!2.实现
千家信息网最后更新 2026年11月01日Scala中如何实现Trait的调用链
本篇内容主要讲解"Scala中如何实现Trait的调用链",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Scala中如何实现Trait的调用链"吧!
2.实现Trait的调用链
如果多个Ttrait都含有同一个方法,Scala的类继承多个Trait后,支持调用所有父Trait的同一方法,只需要在方法最后调用super方法即可。
定义Trait为BaseChecker,两个子Trait分别为
DataChecker校验字段非空,
LengthChecker校验字段长度是否合法
字段类Field 分别顺序继承两个校验类
package com.hadoop.ljs.spark.study.TraitTest/** * @author: Created By lujisen * @company ChinaUnicom Software JiNan * @date: 2020-02-15 16:45 * @version: v1.0 * @description: com.hadoop.ljs.spark.study.TraitTest */ trait BaseChecker{ /*这里有个知识点补充说明一下,如果checkResult()如果为抽象方法,继承类在通过super.调用的时候,*/ /* 需要加上abstract 关键字,不然编译会报错*/ def checkResut(name:String): Unit ={ println("BaseChecker "+name) }}trait DataChecker extends BaseChecker { override def checkResut(name:String): Unit ={ println("DataChecker:数据不为空 "+name) //这里必须要调用super.checkResut() super.checkResut(name) }}trait LengthChecker extends BaseChecker { override def checkResut(name:String): Unit ={ println("LengthChecker:字段长度合法 "+name) //这里必须要调用super.checkResut() super.checkResut(name) }}class Field(data:String) extends LengthChecker with DataChecker { def printResult(): Unit ={ println("字段为:"+data) checkResut(data) }}主函数测试类:
package com.hadoop.ljs.spark.study.TraitTest/** * @author: Created By lujisen * @company ChinaUnicom Software JiNan * @date: 2020-02-15 16:50 * @version: v1.0 * @description: com.hadoop.ljs.spark.study.TraitTest */object TraitChainTest { def main(args: Array[String]): Unit = { val field=new Field("field1") //这里按照继承顺序从右向左调用DataChecker、LengthChecker //,最后调用BaseChecker打印 field.printResult() }}结果输出为:
输入字段为:field1DataChecker:数据不为空 field1LengthChecker:字段长度合法 field1BaseChecker field1
根据结果我们可以看出,这里函数printResult()会按照类Field的继承顺序,依次从右到左调用父Trait的统一函数checkResut(),最后才会调用BaseChecker中的函数checkResut(),这个特性我们可以用来做数据的校验,不同的Trait实现不同的校验分工。这里类似于java中的责任链模式的具体实现。
相关知识补充:
Java责任链模式:
顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。
在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
到此,相信大家对"Scala中如何实现Trait的调用链"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
字段
模式
方法
接收者
函数
合法
数据
责任
长度
顺序
不同
两个
内容
多个
对象
知识
类型
结果
学习
实用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网 科技创业
有马互联网科技
互联网科技公司官网
宜安科技 互联网金融
天津摩尔互联网科技
科技创新互联网企业
友谊互联网络科技
大白互联网科技
盛创互联网科技有限公司
深圳卡尔迅互联网科技有限公司怎么样
深圳互联网科技怎么样
互联网与医疗科技
互联网科技大奖都有哪些公司
米聚互联网科技南京有限公司排面
区块链结合互联网科技
广州富喜互联网络科技
萌小萌互联网科技河南有限公司
全球科技与互联网公司市值变化
互联网科技手机排行榜
湖北辰鑫科技互联网
互联网加科技
南京欣网互联网络科技有限公司
深圳九邦互联网科技有限公司
山东特亿宝互联网科技有限公司
互联网科技公司起名
互联网佳科技有限公司
为想互联网科技怎么样
广西互联网科技孵化中心
徐州市互联网科技有限公司
银川新华互联网科技学校是国营吗