Scala與JAVA互動

來源:互聯網
上載者:User

標籤:scala   java   spark   

Scala的一個強項在於可以很簡單的於已有的Java代碼互動,所有java.lang中的類都已經被自動匯入了,而其他的類需要顯式聲明匯入。
來看看示範代碼吧。我們希望對日期進行格式化處理,比如說用法國的格式。
Java類庫定義了一系列很有用的類,比如Date和DateFormat。由於Scala於Java能夠進行很好的互動,我們不需要在Scala類庫中實現等效的代碼,而只需直接吧Java的相關類匯入就可以了:
import java.util.{Date, Locale}
import java.text.DateFormat import java.text.DateFormat._ object FrenchDate { def main(args: Array[String]) { val now = new Date val df = getDateInstance(LONG, Locale.FRANCE) println(df format now) } }
Scala的import語句看上去與Java的非常相似,但是它更加強大。你可以使用大括弧來匯入同一個包裡的多個類,就像上面代碼中第一行所做的那樣。另一個不同點是當匯入一個包中所有的類或者符號時,你應該使用底線(_)而不是星號(*)。這是由於星號在Scala中是一個有效標識符(例如作為方法名稱)。這個例子我們稍後會遇到。
第三行的import語句匯入了DataFormat類中的所有成員,這使得靜態方法getDateInstance和靜態變數LONG可以被直接引用。
在main函數中,我們首先建立了一個Java的Date執行個體。這個執行個體預設會包含目前時間。接下來我們一個使用剛才匯入的靜態函數 getDateInstance定義了日期格式。最後我們將使用DataFotmat格式化好的日期列印了出來。最後一行代碼顯示了Scala的一個有趣 的文法:只有一個參數的函數可以使用下面這樣的運算式來表示:
df format now
其實就是下面的這個冗長的運算式的簡潔寫法
df.format(now)
這看起來是一個文法細節,但是它導致一個重要的後果,我們將在下一節進行說明。
另外,我們還應當注意到Scala中可以直接繼承或者實現Java中的介面和類。

Scala與JAVA互動

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.