object class18 {
trait FileLogger {
println("fileLogger") val filename: String
// 延迟初始化writer,确保filename已被子类初始化 lazy
val writer = new FileWriter(filename)
def writeLog(msg: String): Unit = {
writer.write(msg) writer.close()
// 注意:每次写入后关闭,多次写入会报错,建议优化
}
}
class MyWriter extends FileLogger {
println("MyWriter") override val filename: String =
"test.log"
}
def main(args: Array[String]): Unit = {
val log = new MyWriter() log.writeLog("测试内容")
}
}