基于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)
}
/**
* 先去调⽤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<String, String> getFieldTypeMap() {
...
}
现在在scala中调⽤该⽅法
val fieldTypeMap = FieldTypeMap()
val innerSQL = fieldTypeMap.map { case (key: String, value: String) => place(".", "_")}.duce(_ + "," + _)
报错:
java replace方法Error:(19, 35) value map is not a member of java.util.Map[String,String]
val structureSQL = fieldTypeMap.map{ case (key: String, value: String) => place(".", "_")
需要添加:
@Deprecated
llection.JavaConversions._
需要添加:
llection.JavaConverters.mapAsScalaMapConverter
然后在使⽤时⽤toScala:
val fieldTypeMap = FieldTypeMap()
val innerSQL = Scala.map { case (key: String, value: String) => place(".", "_")}.duce(_ + "," + _)以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。