一部の Java ライブラリには、java.io.Consoleのような機能を提供するユーティリティ クラスがありますが、入力の Bash パイプ リダイレクトと互換性がありますか?
次のコード:
import java.io.Console;
public class Foo {
public static void main(String args[]) {
Console cons = System.console();
String foo = cons.readLine(); // line-5
}
}
次の操作を行うと、5 行目に NPE がスローされます。
echo "test" | java Foo
これは、 System.inの使用を保存する代替手段を提供せずに、この SO ディスカッションでも言及されています。