博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每天学一点Scala之apply方法
阅读量:6181 次
发布时间:2019-06-21

本文共 695 字,大约阅读时间需要 2 分钟。

  • apply方法一般什么地方出现

        此方法一般在伴生对象中实现的

  • 目的:

        改变了创建伴生类实例的方式,不再通过new的方式,而是直接使用类名() 的方式,scala底层会隐式的调用apply方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package 
com.xej.learning.apply
 
/**
  
* apply方法: 就是创建对象时,不再使用new的形式,而是直接使用了类名()的形式
  
*/
private
[apply] 
class 
Storm
object 
Storm{
   
//创建伴生类的对象时,会隐式的调用这个的
   
def 
apply
: 
Storm 
= 
new 
Storm()
}
private
[apply] 
class 
Kafka(
val 
name
: 
String)
object 
Kafka{
   
//由于伴生类的主构造器是有参数的,
   
//因此,这里,也必须有参数的
   
def 
apply(name
: 
String)
: 
Kafka 
= 
new 
Kafka(name)
}
 
object 
ApplyTest {
   
def 
main(args
: 
Array[String])
: 
Unit 
= 
{
      
val 
storm 
= 
Storm
      
val 
kafka 
= 
Kafka(
"kafka"
)
   
}
}

marathon源码中,同样大量使用了这种形式,如:

本文转自故新51CTO博客,原文链接:http://blog.51cto.com/xingej/1961584 ,如需转载请自行联系原作者

你可能感兴趣的文章
MPAndroidChart的使用
查看>>
[译] Xcode 中的用户断点
查看>>
WEB常见的攻击方式
查看>>
使用 flutter 实现一个底部导航栏
查看>>
日记14(npm)
查看>>
每天一道leetcode27-移除元素
查看>>
linux命令行总结 + 自动备份Python程序
查看>>
使用async实现异步控制
查看>>
手动触发ngOnChanges方案
查看>>
150年前,他对拿破仑做数据可视化
查看>>
Kafka走查
查看>>
Ribbon 框架简介及搭建
查看>>
Vue 模板编程实践 之 巧用过滤器
查看>>
Node.js 服务器
查看>>
小议JS原型链、继承
查看>>
对比几段代码,看看你是 Python 菜鸟还是老鸟
查看>>
在Ubuntu 16.04 / 17.10 / 18.04上安装Oracle Java JDK 11
查看>>
算法-无重复字符的最长子串
查看>>
直播、短视频平台如何选择合适的CDN?
查看>>
GO GC 垃圾回收机制
查看>>