apply 方法的使用|学习笔记

简介: 快速学习 apply 方法的使用。

开发者学堂课程【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 方法实现成功。

相关文章
|
5月前
|
JavaScript 前端开发
call和apply的区别
call和apply的区别
|
5月前
call()与apply()的作用与区别?
call()与apply()的作用与区别?
|
6月前
call()与apply()的作用与区别
call()与apply()的作用与区别
50 1
|
Python
apply函数的用法
apply是pandas处理数据经常用到的函数。我们可以用DataFrame的apply函数实现对多列、多行的操作。可通过axis设置参数,设为1是对列进行操作,参数axis设为0是对行操作。apply经常跟lambda一起使用,非常方便,大大提高了效率。
148 0
|
6月前
|
JavaScript 前端开发
call函数和apply函数的区别
call函数和apply函数的区别
51 0
|
JavaScript 前端开发
call和apply与this的关系
call和apply与this的关系
43 0
|
前端开发
call、apply、bind笔记
call、apply、bind笔记
62 0
|
Serverless Perl
R|apply,tapply
R|apply,tapply
|
前端开发
前端学习案例1:apply,call,bind使用1
前端学习案例1:apply,call,bind使用1
80 0
前端学习案例1:apply,call,bind使用1