大数据全系列 教程
1869个小节阅读:464.9k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
所谓的隐式机制,就是一旦出现编译错误时,编译器会从哪些地方查找对应的隐式转换规则
xxxxxxxxxx
package com.itbaizhan.chapter09
import com.itbaizhan.chapter09.ImplicitTransform4.ProductDao
object ImplicitTransform4 extends Parent with ImpTrait {
def main(args: Array[String]): Unit = {
//TODO 1.当前代码的作用域
/*implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}*/
val productDao = new ProductDao()
productDao.insertProduct()
productDao.updateProduct()
}
//TODO 2.当前代码上级作用域
/*implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}*/
class ProductDao{
def insertProduct(): Unit ={
println("insert producet")
}
}
}
//TODO 3.1 当前类的父类,让ImplicitTransform4继承Parent
class Parent{
/*implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}*/
}
//TODO 3.2 当前类的父类的伴生对象中
object Parent{
/*implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}*/
}
//TODO 4.1当前类的特质,让ImplicitTransform4继承ImpTrait
trait ImpTrait{
/*implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}*/
}
//TODO 4.2当前类的特质的伴生对象
object ImpTrait{
/*implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}*/
}
当前类所在的包对象
xxxxxxxxxx
package com.itbaizhan
import com.itbaizhan.chapter09.ImplicitTransform4.ProductDao
package object chapter09 {
implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}
}
其实最直接的方式就是直接导入(使用最多):新建ImportTransform
xxxxxxxxxx
package com.itbaizhan.chapter09
import com.itbaizhan.chapter09.ImplicitTransform4.ProductDao
object ImportTransform {
implicit class ProductDaoExt(productDao: ProductDao){
def updateProduct(): Unit ={
println("update producet")
}
}
}
使用前导入:
xxxxxxxxxx
import com.itbaizhan.chapter09.ImportTransform._
val productDao = new ProductDao()