大数据全系列 教程
1869个小节阅读:464.9k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在Scala2.10后提供了隐式类,可以使用implicit声明类,隐式类非常强大,同样可以扩展类的功能,在集合的数据处理中,隐式类发挥了重要的作用。
隐式类注意如下两点:
xxxxxxxxxx
package com.itbaizhan.chapter09
//隐式类
object ImplicitTransform3 {
def main(args: Array[String]): Unit = {
//TODO 2.2 添加隐式函数
/*implicit def transform(productDao: ProductDao): ProductDaoExt ={
new ProductDaoExt()
}*/ //TODO 3.2 注释掉隐式函数
val productDao = new ProductDao()
productDao.insertProduct()
//TODO 1.现在需求增加了,需要一个updateProduct()方法,
// 如果直接修改ProductDao添加该方法不符合OCP原则,不太好。
//TODO 2.3 productDao便可以调用扩展类中的方法了。
productDao.updateProduct()
//TODO 2.4总结,该方式比较复杂,第一步需要创建一个扩展类,第二步还需要添加一个隐式函数。
//TODO 3. 简化2的操作,目的:ProductDao ->ProductDaoExt
}
//TODO 2.1 创建扩展类
/*class ProductDaoExt{
def updateProduct(): Unit ={
println("update producet")
}
}*/
//TODO 3.1 声明隐式类,注意:隐式类不是为顶级类
implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}
class ProductDao{
def insertProduct(): Unit ={
println("insert producet")
}
}
}
实时效果反馈
1. 关于Scala隐式类的描述,错误的是:
A 使用implicit声明的类,被称为隐式类。
B 隐式类所带的主构造方法可以有两个或两个以上的参数。
C 隐式类必须被定义在“类”或“伴生对象”或“包对象”里,即隐式类不能是顶级的。
答案:
1=>B 有且只能有一个参数。