Groovy の次のコードはGString
、リストに s を追加します。
List<String> args = [ 'cmd', "-Dopt=${value}" ]
ProcessBuilder
このリストでを作成すると、 が得られますClassCastException
。リスト要素を正しい型に強制するグルーヴィーな方法は何ですか?
Groovy の次のコードはGString
、リストに s を追加します。
List<String> args = [ 'cmd', "-Dopt=${value}" ]
ProcessBuilder
このリストでを作成すると、 が得られますClassCastException
。リスト要素を正しい型に強制するグルーヴィーな方法は何ですか?
または、次のことができます。
List<String> args = [ 'cmd', "-Dopt=${value}"] as String[]
また
List<String> args = [ 'cmd', "-Dopt=${value}"]*.toString()
実際、なぜ ProcessBuilder を興味深く使用しているのですか? Groovy はプロセス管理を行う方法を追加し、さらにexecute
List に 3 つのメソッドを追加します
次のことができます (これは OS X または Linux 上にあります):
def opt = '-a'
println( [ 'ls', "$opt" ].execute( null, new File( '/tmp' ) ).text )
/tmp
私のフォルダ内のファイルを印刷します
私はテストをしました:
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
コードを少し変更して次のようにします。
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());
これを生成しました:
class java.util.ArrayList
class java.lang.String
class java.lang.String
トリックを行う必要がありますが、これが最善の方法であるかどうかは100%わかりません。