百度云: http://pan.baidu.com/s/1jGjFpWy
腾讯微云: http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2
DT大数据梦工厂 温故而知新 之12讲scala 中apply应用
package TestPractice
/**
* @author Administrator
*/
object ApplyDemo {
def main(args: Array[String]) {
//调用apply()方法的方式一
//Dog.apply()
//调用apply()方法的方式二
// Dog()
//创建对象的方式一
val cat1 = new Cat
println(cat1)
//创建对象的方式二(需要在对象中定义apply()方法)
val cat2 = Cat.apply
println(cat2)
//创建对象的方式三(需要在对象中定义apply()方法)(推荐)
val cat3 = Cat()
println(cat3)
//获得对象的方式四
val cat4 = Cat
println(cat4 + "\t" + Cat)
//用object Student的apply()方法,创建对象
Student1("stu001","zhangsan","shandong")
}
}
//应用1
class Dog {
println("class Dog apply()")
}
object Dog {
//对象中的apply()方法
def apply(): Unit = {
println("object Dog apply()")
}
}
//总结 在函数动调用可以直接调用其方法 还可以直接省去直接调用类构造器
//应用2
class Cat{
println("class Cat apply()")
}
object Cat {
//object中apply()方法一般去创建一个对象
def apply() = new Cat
}
class Student1(var id :String, var name:String,var addr:String){
}
object Student1{
def apply( id :String, name:String, addr:String)={
println("object Student.apply()")
new Student1(id,name,addr)
}
}
run 结果
class Cat apply()
TestPractice.Cat@6a5714de
class Cat apply()
TestPractice.Cat@7b1b315c
class Cat apply()
TestPractice.Cat@3645ce28
TestPractice.Cat$@4838ddcc TestPractice.Cat$@4838ddcc
object Student.apple()
总结 object中apply()方法一般去创建一个对象