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 方法实现成功。

相关文章
|
数据采集 自然语言处理 搜索推荐
ModelScope问题之模型encoder配置报错如何解决
ModelScope模型报错是指在使用ModelScope平台进行模型训练或部署时遇到的错误和问题;本合集将收集ModelScope模型报错的常见情况和排查方法,帮助用户快速定位问题并采取有效措施。
830 0
|
新零售 供应链 监控
蒙牛集团信息技术助理副总裁、CIO张决:双中台助力蒙牛数字化转型 | 阿里CIO学院名人堂
12月3日,2020阿里CIO学院在杭州举行。400位企业CEO、CTO、CIO齐聚一堂,共同探讨企业数字化转型经验。今年新冠 疫情爆发,给企业带来不小挑战,到场嘉宾表示,数字化已经成为企业未来发展最大的确定性。 本次峰会由阿里CIO学院主办。据阿里CIO学院院长洪英介绍,400位嘉宾分别来自央企、国企、民企,都是企业信息化建设的领导者。
蒙牛集团信息技术助理副总裁、CIO张决:双中台助力蒙牛数字化转型  | 阿里CIO学院名人堂
|
7月前
|
存储 JSON API
aipy实战:Deepseek-V3、Hunyuan&Qwen分析618平板攻略
Aipy是一款结合LLM与Python的智能工具,用户通过简单指令即可让LLM分析并生成代码,实时解决问题。本次v0.1.28版本新增联网搜索、案例分享等功能,并引入混元和Qwen模型。测评中,三个模型完成“618平板选购攻略”任务表现各异:deepseek-v3界面精美、信息全面但价格有偏差;hunyuan-turbos-latest信息不全但界面简洁;qwen-plus-latest推荐合理但数据失真。总体而言,Aipy在操作友好性和分析界面上显著提升,适合解决实际问题。
|
10月前
|
程序员 UED Python
Python入门:3.Python的输入和输出格式化
在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。
Python入门:3.Python的输入和输出格式化
|
9月前
|
人工智能 搜索推荐 物联网
线上共学 | Mac本地玩转大模型
本文介绍如何在Mac本地部署和使用大模型,包括基础运行、多模态扩展、交互优化、知识增强、定制进化等技术链路,并提供Ollama、Stable Diffusion、LM-Studio等工具的详细操作指南。
2084 8
Mac每次都要执行source ~/.bash_profile配置的环境变量才生效
Mac每次都要执行source ~/.bash_profile配置的环境变量才生效
592 2
|
人工智能 算法 搜索推荐
选择智能工单系统的理由,功能与效益分析
智能工单管理系统利用数字化技术,帮助企业高效接收、分配和解决客户请求,具备多渠道接收、智能分配和自动化处理等功能。通过实时响应、数据分析和协作工具,系统显著提升服务质量和效率,优化客户体验,成为企业提升竞争力的关键工具。Zoho Desk等系统表现尤为突出,支持多种渠道和服务功能,助力企业实现高效管理。
362 1
|
安全 数据安全/隐私保护 UED
什么是OTA升级管理系统?
【7月更文挑战第20天】什么是OTA升级管理系统?
731 6
|
SQL Oracle NoSQL
实时计算 Flink版操作报错合集之报错“找不到对应的归档日志文件”,怎么处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
XML 关系型数据库 MySQL
Pandas 2.2 中文官方教程和指南(一)(1)
Pandas 2.2 中文官方教程和指南(一)
797 0