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

作者:长河 时间:2021-07-05 11:53:04 

在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 = 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: String) => key.replace(".", "_")}.toStream.sorted.reduce(_ + "," + _)

来源:https://changhe.blog.csdn.net/article/details/78885009

标签:Scala方法,调用,Java方法
0
投稿

猜你喜欢

  • C#使用Matrix执行缩放的方法

    2022-05-03 15:46:58
  • C#如何将DataTable导出到Excel解决方案

    2022-03-30 18:44:28
  • java中TreeMap排序的示例代码

    2023-02-17 15:39:30
  • Spring的@Validation和javax包下的@Valid区别以及自定义校验注解

    2021-06-20 04:06:35
  • Springboot实现Shiro整合JWT的示例代码

    2022-01-30 02:58:32
  • 简单探索 Java 中的惰性计算

    2023-11-16 20:25:28
  • C#使用opencv截取旋转矩形区域图像的实现示例

    2023-11-12 22:20:44
  • java 获取字节码文件的几种方法总结

    2023-11-29 15:17:57
  • 基于Mybatis plus 自动代码生成器的实现代码

    2023-11-24 10:40:51
  • Java Set集合去重的原理及实现

    2023-08-11 10:56:11
  • java中匿名内部类详解

    2022-10-06 14:56:56
  • C# dump系统lsass内存和sam注册表详细

    2021-06-26 12:19:53
  • SpringBoot异步调用方法并接收返回值

    2023-08-16 22:33:49
  • springboot+log4j.yml配置日志文件的方法

    2023-08-07 11:33:17
  • 修改maven本地仓库路径的方法

    2022-08-09 13:44:16
  • java.sql.Date和java.util.Date的区别详解

    2023-11-28 16:15:09
  • Spring Boot Security 结合 JWT 实现无状态的分布式API接口

    2021-06-04 05:01:17
  • C#-WinForm跨线程修改UI界面的示例

    2022-01-14 13:25:44
  • Spring Boot配置AOP打印日志的全过程

    2023-08-07 12:56:38
  • 英语单词state与status的区别

    2021-09-04 13:57:34
  • asp之家 软件编程 m.aspxhome.com