Dawno nic w Javie nie robiłem, ale nie mogę zrozumieć czemu mam problem z zasięgiem zmiennych ..
Robiłem sobie coś takiego. ('zabawa' z python'em z poziomu Javy)..
Chodzi o zmienną String getDecodedString;
którą deklaruje przed blokiem try-catch -- mianowicie jest ona niewidoczna w tym bloku i ostatecznie otrzymuje error związany z zasięgiem zmiennej .. dlaczego tak to jest? W C++ nie ma z czymś takim problemu.. (tzn. nie testowałem tego na bloku try-catch w cpp.. może ma on specyficzne właściwości..). W Javie pomaga zmienna prywatna, no ale...
import java.io.*;
public class PythonScript {
//private String getDecodedString;
public void Script() throws IOException
{
ProcessBuilder pb = new ProcessBuilder("python", "-i");
Process p;
p = pb.start();
OutputStream stdin = p.getOutputStream();
InputStream stdout = p.getInputStream ();
OutputStreamWriter out = new OutputStreamWriter(stdin);
out.write("print \'hello from python\'\n");
out.write("2 + 2 \n");
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(stdout));
String decodedString;
String getDecodedString; // <-- tutaj deklaruje zmienną
try {
while ((decodedString = in.readLine()) != null) {
System.out.println(decodedString);
getDecodedString = decodedString; // <--
}
} catch (IOException e) {
} finally {
in.close();
}
System.out.println(getDecodedString ); //<-- problem ??
}
}