Groovyで次のコードで文字列のリストを作成し、リストにGString
秒を追加します。私はこのリストにProcessBuilder
を作成するとGroovyの
List<String> args = [ 'cmd', "-Dopt=${value}" ]
、私はClassCastException
を取得します。リストの要素を正しい型に強制的に変換する魅力的な方法は何ですか?
Groovyで次のコードで文字列のリストを作成し、リストにGString
秒を追加します。私はこのリストにProcessBuilder
を作成するとGroovyの
List<String> args = [ 'cmd', "-Dopt=${value}" ]
、私はClassCastException
を取得します。リストの要素を正しい型に強制的に変換する魅力的な方法は何ですか?
または、あなたが行うことができます:
List<String> args = [ 'cmd', "-Dopt=${value}"] as String[]
または
実際List<String> args = [ 'cmd', "-Dopt=${value}"]*.toString()
、なぜあなたが関心の外にProcessBuilderをを使用していますか? Groovyのはprocess managementを行う方法を追加し、さらにはあなたが行うことができます3 execute
methods to List
追加します(これは、OS XやLinux上で):私の/tmp
フォルダ
両方ともあまりにも多すぎることに注意してください。最初のものは最初の 'List'を' String [] 'に変換し、それを' List'に変換し、2番目のものは ' Listのコピーも作成し、すべての要素に対して 'toString()'を呼び出します。 –
@Joachimええ、しかし、彼らは特定の要素のリストの中に 'toString'を埋め込むよりももっと洗練されています(IMHO)。 –
は非常に真です。また、これはコードパス上の重要な要素であるとは考えにくいです。 –
Iは、試験をした:
def value = "abc"
List<String> args = [ 'cmd', "-Dopt=${value}"];
System.out.println (args.getClass());
System.out.println (args.get(0).getClass());
System.out.println (args.get(1).getClass());
出力された:
class java.util.ArrayList
class java.lang.String
class org.codehaus.groovy.runtime.GStringImpl
があると、コードを少し変更:
class java.util.ArrayList
class java.lang.String
class java.lang.String
:
def value = "abc"
List<String> args = [ 'cmd', "-Dopt=${value}".toString()];
System.out.println (args.getClass());
System.out.println (args.get(0).getClass());
System.out.println (args.get(1).getClass());
は、これを生成
トリックを行う必要がありますが、これを実行するには、これが最善の方法であるとは100%確信していません。
マイナーヒント:私は 'System.out.println(args * .getClass()が見つかりませんでした。これは、あなたがそれを見逃した場合にポストしています) )) 'を書くとより良い出力を生成する;-) –
@ジョーチングm、クール! (あるいは、私はGroovyと言うべきでしょうか?) – RonK
I内のファイルを出力
–