基于Scala和Java方法的相互调用

网友投稿 790 2022-11-23

基于Scala和java方法的相互调用

目录在java中调用Scala的方法呢?1.首先是静态方法2. JAVA中调用Scala的方法3.Scala中的非静态方法4.Java中的调用scala中调用java方法报错

在Scala中调用java的方法,很简单,直接导入传递参数就可以进行调用了.

在Java中调用Scala的方法呢?

经过测试,也是很简单,静态方法直接传递参数,就可以调用了,非静态的方法,使用对象也可以调用方法

具体如下:

1.首先是静态方法

object ScalaObjectDemo extends App {

println("hello cc i miss you very much");

def say(name:String){

println(name)

}

/**

* 先去http://调用java方法

* @return

*/

def say3(): Int ={

println("这里是scala的方法了")

var tmp=JavaDemo.say2("4");

println(tmp);

tmp

}

}

2. JAVA中调用Scala的方法

public class JavaDemo {

public static void main(String[] args) {

ScalaObjectDemo.main(new String[]{});

ScalaObjectDemo.say("cc ");

//测试反复的方法调用

int say3 = ScalaObjectDemo.say3();

System.out.println(say3);

}

public static int say2(String age){

System.out.println("这里是java的static 方法了"+age);

return Integer.parseInt(age);

}

}

3.Scala中的非静态方法

class ScalaClassDemo {

def hi(name:String):Int={

println(name)

1

}

}

4.Java中的调用

int zhaojun = new ScalaClassDemo().hi("cc");

System.out.println(zhaojun);

经过测试全部能正常运行。

scala中调用java方法报错

有一个java方法返回一个对象

public Map getFieldTypeMap() {

...

}

现在在scala中调用该方法

val fieldTypeMap = someObject.getFieldTypeMap()

val innerSQL = fieldTypeMap.map { case (key: String, value: String) => key.replace(".", "_")}.toStream.sorted.reduce(_ + "," + _)

报错:

Error:(19, 35) value map is not a member of java.util.Map[String,String]

val structureSQL = fieldTypeMap.map{ case (key: String, value: String) => key.replace(".", "_")

需要添加:

@Deprecated

import scala.collection.JavaConversions._

需要添加:

import scala.collection.JavaConverters.mapAsScalaMapConverter

然后在使用时用toScala:

val fieldTypeMap = someObject.getFieldTypeMap()

val innerSQL = fieldTypeMap.toScala.map { case (key: String, value:PdOXRBQzbW String) => key.replace(".", "_")}.toStream.sorted.reduce(_ + "," + _)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:DeepWindow论文简读
下一篇:VUE使用mqtt
相关文章

 发表评论

暂时没有评论,来抢沙发吧~