次のコードがありますが、新しい Thread クラスの外部で String 行を宣言すると、例外が発生します。私は C# のバックグラウンドを持っているので、Java が真のクロージャーをサポートしていないことを理解しています。だから私の質問は:
新しいスレッドの外で文字列を宣言し、それを新しいスレッドで使用するにはどうすればよいですか?
別のメソッドで定義された内部クラス内の非最終変数行は参照できません
ProcessBuilder builder =
new ProcessBuilder("/Users/Joe/Desktop/file", "-i", src);
builder.redirectErrorStream(true);
Process process = builder.start();
final InputStream is = process.getInputStream();
String line;
new Thread(new Runnable() {
@Override public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(is));
while ((br.readLine()) != null) {
line += br.readLine() + "\n";
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();