2017-10-12 73 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() –