https://blog.csdn.net/u012443641/article/details/89921243
1.简介
本文主要通过反编译工具(jd-gui)查看scala代码文件编译之后的.class文件对应的java代码来理解伴生类和伴生对象之间的关系。
2.伴生类和伴生对象的区别和联系
1. 关系
伴生类中主要编写非静态代码,伴生对象中主要编写静态代码,静态代码包括属性和方法。scala中取消了static关键字,因此静态代码只能写到伴生对象中。伴生对象也是单例对象,多次修改其中的内容,后面的访问者获取到的则是最后一次修改之后的内容,而不是初始化内容。
2. 使用
伴生类中的属性和方法只能通过创建对象的方式访问;伴生对象中的属性和方法只能通过 类名. 的方式访问,不能创建对象。
Scala 的apply 有2 张形式,一种是 伴生对象的apply ,一种是 伴生类中的apply,下面展示这2中的apply的使用。
示例代码:
- class ApplyOperation {
- }
- class ApplyTest{
- def apply() = println("I am into spark so much!!!")
- def haveATry: Unit ={
- println("have a try on apply")
- }
- }
- object ApplyTest{
- def apply() = {
- println("I am into Scala so much")
- new ApplyTest
- }
- }
- object ApplyOperation{
- def main (args: Array[String]) {
- val array= Array(1,2,3,4)
- val a = ApplyTest() //这里就是使用object 的使用
- a.haveATry
- a() // 这里就是 class 中 apply使用
- }
- }
运行结果
I am into Scala so much
have a try on apply
I am into spark so much!!!