java - Main(args) 包含多个数组

标签 java scala interface

我有两个项目:一个是Java,一个是Scala。 Java 项目必须通过 main(args) 将一些参数传递给 Scala 项目。

def main(args: Array[String])

它需要传递一些变量名称(例如数据库和MongoDB集合名称),但它还需要传递两个可变长度的数组。一个例子是:

(dbName, collectionName, numberOfClusters, 
 category1, category2,..., categoryN, 
 column1, column2, ..., columnN)

我不知道如何解析这种输入。我唯一想到的是计算每个数组中的元素数量并将该数字作为参数插入,以便在读取时可以计算索引和偏移量以了解每个数组的开始位置。我可以通过使用以下方法访问此参数中的各个元素:

args.apply(i)

返回第i索引处的元素。但我不知道第一个数组(类别)的值在哪里结束以及第二个数组(列)的值从哪里开始。我正在寻找一种行业标准解决方案来解析包含多个未知大小数组的 main 参数。

最佳答案

您的问题有许多不清楚的问题,但是为什么您不能将数组作为数组传递?具体来说,作为可以轻松解析为 Scala 列表的逗号分隔数组?

object MainExp {
  def main(args: Array[String]): Unit = {
    if (args.length != 5) {
      println("Invalid number of arguments!")
    } else {
      val dbName = args(0)
      val collectionName = args(1)
      val numberOfClusters = args(2)
      val categories = args(3).split(',').toList
      val columns = args(4).split(',').toList
      println("Database=%s\nCollection=%s\nClusters=%s\n".format(dbName, collectionName, numberOfClusters))
      println("Categories: length=%s".format(categories.length))
      categories.foreach(x => println("\t%s".format(x)))
      println("Columns: length=%s".format(columns.length))
      columns.foreach(x => println("\t%s".format(x)))
    }
  }
}

以上产量:

$ scala MainExp.scala myDB aCollection 42 red,blue,green alpha,gamma,delta,omega
Database=myDB
Collection=aCollection
Clusters=42

Categories: length=3
    red
    blue
    green
Columns: length=4
    alpha
    gamma
    delta
    omega

通过这种方式,任意程序都可以调用您的 Scala 脚本。每次只会有五个参数。

(请注意,鉴于您的两个程序都在 JVM 上,我不确定您调用整个单独执行上下文的方法是否正确,但这应该回答如何将命令行参数转换为已知长度列表。)

关于java - Main(args) 包含多个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39255767/

相关文章:

scala - Scala 集合中的森林砍伐

java - ExifInterface : Skip the tag entry since tag number is not defined, 压缩图片时

java - Java Deflate 的静态字典

java - 如何增加 ODBC 中的字符限制

scala - 具有多态类型的有限状态机?

scala - 映射每个条目生成 0 或 1 个结果的惯用方法是什么?

c#接口(interface),抽象类,强制继承类不是抽象类

go - golang 接口(interface)中是否可以有可选方法?

Java <-> Python : share objects

java - 应用引擎,JSP "No forced path servlet for/WEB-INF/home.jsp"