2017-10-12 78 views
-2

斯卡拉:需要一個Java LAMBDA相當於

val parseInt = (s: String) => s.toInt 
val num=parseInt.apply("10") 

映射到Java中:

Function<String, Integer> parseInt = (String s) -> Integer.parseInt(s); 
Integer num= parseInt.apply("10"); 

備選: 在斯卡拉:

val parseInt = (s: String) => s.toInt 
val num=parseInt("10") 

什麼是Java中的等價物

val num=parseInt("10")? 
+0

你需要格式化代碼以使其易於理解 – Lokesh

+1

雖然Scala允許這兩個版本('val num = parseInt.apply(「10」)'和'val num = parseInt(「10」)'),在Java中它總是'Integer num = parseInt.apply(「10」);' –

+0

'Integer num = parseInt.apply(「10」);' –

回答

0

不能使用Lambda擺脫apply,但是你可以創建一個具有相同知名度的獨立靜態方法:

static Integer parseInt(String s) { return Integer.parseInt(s); } 
+0

但是你必須創建一個能夠勝過整個目的的類。謝謝。你確定我們無法消除申請的電話嗎? –

+0

@Raster your code'Integer num = parseInt.apply(「10」);'已經在類中,您可以將該方法添加到該類中。否則,不能刪除'apply'。 – assylias

3

相當於Java中的是靜態方法:Integer.parseInt(String str)

+0

讓我們試着忘記Integer類。讓我們看看我們可以在正在創建的自定義函數方面做些什麼。謝謝。主要是我們可以做些什麼來避免使用apply() –