在Scala2.10后提供了隐式类,可以使用implicit声明类,隐式类的非常强大,同样可以扩展类的功能,在集合中隐式类会发挥重要的作用。
隐式转换函数优先级要高于隐式类.
隐式类也可以当作一个普通的类来使用,这个类仅仅是多了个隐式转换功能,本质上还是一个类.
格式要求:
1.主构造必须要有一个参数,参数类型就是要转换的参数的类型
2. 隐式类必须是内部类
3.不能顶级
4.其所带的构造参数有且只能有一个
5.隐式类必须被定义在“类”或“伴生对象”或“包对象”里,即隐式类不能是顶级的。
object TestImplicitClass {
implicit class MyRichInt(arg: Int) {
def myMax(i: Int): Int = {
if (arg < i) i else arg
}
def myMin(i: Int) = {
if (arg < i) arg else i
}
}
def main(args: Array[String]): Unit = {
println(1.myMax(3))
}
}
案例2:
**
import java.io.File
import scala.io.Source
object Implicit4 {
def main(args: Array[String]): Unit = {
val content: String = new File("E:\\ZJJ_Neaten5.10\\ZJJ_Scala\\demo\\src\\main\\java\\implicitdemo\\Implicit2.scala")
.readContent
println(content)
}
// 隐式类必须是内部类
implicit class RichFile(file: File) {
def readContent: String = {
Source.fromFile(file, "utf-8").mkString
}
}
}
输出 : 输出的就是文件的内容,这里就不粘贴了.