apply方法
代码示例1(apply方法)
1、定义一个apply方法,返回值
2、进行实例化,不可变的myObject ,前面说过凡是类没有参数的话,可以不加括号,TestApplyClass就是一个。直接生成一个实例。
3、传递参数param1
执行结果:
因此证明了,采用这种方式传递一个参数时,确实会默认调用已经定义好的apply方法。
我们myObject就是一个变量,对myObject这个变量我们使用括号传递一个字符串类型的参数param1,这时候会自动生成对apply 方法的调用,打印后续结果。
代码示例2(调用apply)
1、声明一个简单的单例对象,单例对象不需要额外声明类的,它自己本身就可以定义相关的方法。
2、传递了两个参数,方法体中打印并连接两个参数
3、声明一个不可变的group对象(变量),对单例对象不需要new,直接就可以用单例对象名称,括号可直接传递参数
执行结果:
apply方法最后的返回值是String类型,表达式的group值是zhangfei anf Liubei,是通过表达式连接起来作为返回值返回来的。
返回来后,赋予了group.
总结:
我们通过单例对象的名称()传递参数时,也会自动调用appy方法。
代码示例3(调用伴生类)
例3告诉我:到底什么时候调用伴生类
1、上面的代码时将伴生类和伴生对象放在一起,注意类和对象同名是才能叫做伴生类和伴生对象,上面例子中有两对伴生类和伴生对象。
2、注意 伴生对象 入口函数main方法中,val a = ApplyTest() ,直接调用名称()不需要new,注意这里调用的是伴生对象中的方法。
而我们在使用new关键字生成实例,再用实例去调用时才会调用伴生类中的apply方法。
因此这里调用后打印的结果为下面的红色
3、而执行a.greetingOfClass,生成的变量a,是既可以访问伴生类中的对象也可以访问伴生对象中方法,所以这里面访问的是伴生类中的greetingOfClass中的方法,并打印出来
4、对于a()来讲,a已经生成了实例对象,对实例对象加()才会去调用伴生类中apply的方法!!
再来一遍:什么时候直接调用伴生类中的方法,只有先用new关键字new一下生成实例;或者像此例一样已经生成了一个实例a,a加一个圆括号(),此时才会调用伴生类中的方法。
代码示例4(数组的由来)
此例解释了为什么在scala编程时,直接这么写就可以直接生成一个数组,这是他的理由
代码示例5update方法(数组赋值用圆括号表示)
1、此代码解释了为什么在给数组赋值时会用圆括号来表示,java用[]
下面代码中括号中参数为0,等号右边的对象“bigdata”,将这两个参数作为update方法的输入参数来执行调用。默认调用update中的方法完成更新。