apply方法一般什么地方出現(xiàn)
創(chuàng)新互聯(lián)公司主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、網(wǎng)絡(luò)營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式重慶網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)、微商城、網(wǎng)站托管及網(wǎng)站建設(shè)維護(hù)、WEB系統(tǒng)開發(fā)、域名注冊、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為PVC花箱行業(yè)客戶提供了網(wǎng)站設(shè)計(jì)服務(wù)。
此方法一般在伴生對象中實(shí)現(xiàn)的
目的:
改變了創(chuàng)建伴生類實(shí)例的方式,不再通過new的方式,而是直接使用類名() 的方式,scala底層會(huì)隱式的調(diào)用apply方法
package com.xej.learning.apply /** * apply方法: 就是創(chuàng)建對象時(shí),不再使用new的形式,而是直接使用了類名()的形式 */ private[apply] class Storm object Storm{ //創(chuàng)建伴生類的對象時(shí),會(huì)隱式的調(diào)用這個(gè)的 def apply: Storm = new Storm() } private[apply] class Kafka(val name: String) object Kafka{ //由于伴生類的主構(gòu)造器是有參數(shù)的, //因此,這里,也必須有參數(shù)的 def apply(name: String): Kafka = new Kafka(name) } object ApplyTest { def main(args: Array[String]): Unit = { val storm = Storm val kafka = Kafka("kafka") } }
marathon源碼中,同樣大量使用了這種形式,如: