Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Java数组传递给Scala_Java_Scala_Scala 2.8 - Fatal编程技术网

将Java数组传递给Scala

将Java数组传递给Scala,java,scala,scala-2.8,Java,Scala,Scala 2.8,虽然我使用Scala已经有一段时间了,并且之前已经将它与Java混合在一起,但我遇到了一个问题 如何将Java数组传递给Scala?我知道另一种方法相当简单。然而,Java到Scala并非如此 我应该在Scala中声明我的方法吗 下面是一个我正在努力实现的小例子: 斯卡拉: def sumArray(ar: Array[Int]) = ... 爪哇: 这是可能的吗?是的,这是完全可能的,事实上非常容易。以下代码将按预期工作 // TestArray.scala object TestArray

虽然我使用Scala已经有一段时间了,并且之前已经将它与Java混合在一起,但我遇到了一个问题

如何将Java数组传递给Scala?我知道另一种方法相当简单。然而,Java到Scala并非如此

我应该在Scala中声明我的方法吗

下面是一个我正在努力实现的小例子:

斯卡拉:

def sumArray(ar: Array[Int]) = ...
爪哇:


这是可能的吗?

是的,这是完全可能的,事实上非常容易。以下代码将按预期工作

// TestArray.scala
object TestArray {
    def test (array: Array[Int]) = array.foreach (println _)
}
-

使用以下命令编译/运行

$scalac TestArray.scala
$javac -cp .:/opt/scala-2.8.0/lib/scala-library.jar Sample.java
$java -cp .:/opt/scala-2.8.0/lib/scala-library.jar Sample
绝对是

Scala中的
Array[T]
类直接映射到Java类型
T[]
。它们在字节码中的表示形式完全相同

至少在2.8中是这样。在2.7中情况有所不同,涉及到很多数组装箱,但理想情况下,您现在应该使用2.8


因此,是的,它将完全按照您所写的那样工作。

谢谢。这是Eclipse的插件错误。从这条评论中,我了解到您遇到了与我现在看到的相同的问题。在Java类中,我有一个调用
App.main(args)
,其中
args
String[]
类型,而
App
是带有
defmain(args:Array[String])
的Scala
对象。现在EclipseJDT源代码分析器将该调用标记为错误:“类型应用程序中的方法main(数组)不适用于参数(字符串[])”。这是无害的,错误甚至不会显示在Problems视图中。我不知道这是JDT、Scala插件、Scala编译器中的问题,还是上述多个方面的问题。
// Sample.java
public class Sample
{
    public static void main (String [] args) {
        int [] x = {1, 2, 3, 4, 5, 6, 7};
        TestArray.test (x);
    }
}
$scalac TestArray.scala
$javac -cp .:/opt/scala-2.8.0/lib/scala-library.jar Sample.java
$java -cp .:/opt/scala-2.8.0/lib/scala-library.jar Sample