开发者学堂课程【Scala 核心编程-基础:apply 方法的使用】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8987
apply 方法的使用
内容介绍
一、伴生对象-apply 方法
二、apply 方法案例演示
一、伴生对象-apply 方法
在伴生对象中定义 apply 方法,可以实现:类名()方式来创建对象实例。
在开发中经常可见如下方式写代码:
package com. atguigu. chapter08
object ApplyDemo01 {
def main(args: Array[string]): Unit = {
val list = List(1,2,5)
//都知道在JAVA中构建一个对象要么是通过反射机制,要么是通过new进行创建对象,而这里是直接构建 list 并没有 new 创建,而且仍然可以运行。
println(list)
}}
如果对 List 进行定位的话可以看到里面有 apply 方法。
二、apply 方法案例演示
package com. atguigu. chapter08
object ApplyDemo01 {
def main(args: Array[String]): Unit = {
val list = List(1, 2, 5)
println(list)
val pig = new Pig("小花")
//传统的构建方法就是创建 pig,然后传入“小花”,但是也可以采用其他的构建方法,像下面的。
//使用 apply 方法来创建对象
val pig2 = Pig("小黑猪")
//自动 apply(pName: String)
val pig3 = Pig
(
)
//自动触发 apply(),使用 pig3来得到所有统一的 pig 名字,Pig 无参的话可以什么都不填。
println("pig2.name=" + pig2.name)
//输出名字应该为小黑猪
println("pig3.name=" + pig3.name)
//输出名字应该为匿名猪猪
}}
//案例演示 apply方法。
class Pig(pName:String) {
//定义主构造器 pName
var name: String = pName
//定义每个猪猪的名字变量 name,初始化为 pName,
}
object Pig {
//另一个构建方法:编写一个 apply
def apply(pName: String): Pig = new Pig(pName )
//apply 是一个方法,然后返回 Pig,方法体为 Pig
def apply(): Pig = new Pig(" 匿名猪猪")
//再构建一个 apply 方法,不传入值就是无参的 apply 方法,所有猪猪的名字都一样,为“匿名猪猪”,注意这里是一定要调用 class Pig 的,所以可以看到是通过 apply 来实现的单例模式,如果 apply 把构造函数作为私有的,那么就只能走这条线了。
}
D: \program\jdk8\bin\java
List(1, 2, 5)
pig2.name=小黑猪
pig3. name=匿名猪猪
说明 apply 方法实现成功。