5

コマンドライン解析にApachecommonscli(1.2)を使用しています。

私のコードには次のものがあります:

import org.apache.commons.cli.OptionBuilder
OptionBuilder.withLongOpt("db-host").hasArg.
withDescription("Name of the database host").create('h')

エラーが発生しますhasArg is not a member of org.apache.commons.cli.OptionBuilder.hasArgに変更しても違いはありません.hasArg()

なんで?

ところで、Javaはこれをうまく解析します。

4

1 に答える 1

12
import org.apache.commons.cli.OptionBuilder
OptionBuilder.withLongOpt("db-host").hasArg.
withDescription("Name of the database host").create('h')

エラーが発生しますhasArg is not a member of org.apache.commons.cli.OptionBuilder.hasArgに変更しても違いはありません.hasArg()

なんで?

にはインスタンスメソッドhasArgがないためOptionBuilder、静的メソッドのみです。は静的メソッドであるためhasArg、クラスのインスタンスではなく、クラスで呼び出す必要があることは明らかです。

ところで、Javaはこれをうまく解析します。

これが構文解析と何の関係があるのか​​わかりません。Scalaもこれをうまく解析します。さらに、これは他の言語ではなくScalaコードであるため、このコードでまったく異なるプログラミングが行うことと行わないことはまったく関係ありません。

あなたはこのようなことをする必要があります:

import org.apache.commons.cli.OptionBuilder

OptionBuilder.withLongOpt("db-host")
OptionBuilder.hasArg
OptionBuilder.withDescription("Name of the database host")

val optionParser = OptionBuilder.create('h')
于 2011-02-04T22:03:21.530 に答える