每天学一点Scala之apply方法
-
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 ,如需转载请自行联系原作者
