public class J {
public Integer method(Integer x)
{
Integer val = x;
try
{
return val;
}
finally
{
val = x + x;
}
}
public static void main(String[] args)
{
J littleFuzzy = new J();
System.out.println(littleFuzzy.method(new Integer(10)));
}
}
To spowoduje powrót "10".Zachowanie instrukcji return w haku, a na końcu
Teraz po prostu zamieniam zwracany typ Integer na StringBuilder, a wynik został zmieniony.
public class I {
public StringBuilder method(StringBuilder x)
{
StringBuilder val = x;
try
{
return val;
}
finally
{
val = x.append("aaa");
}
}
public static void main(String[] args)
{
I littleFuzzy = new I();
System.out.println(littleFuzzy.method(new StringBuilder("abc")));
}
}
wyjście jest "abcaaa"
Więc ktoś może mi wyjaśnić szczegółowo.? jakie są różnice.?
Jestem również zdezorientowany, gdy wykonałem ten program na moim komputerze. W pierwszym przypadku zwraca 10 (spodziewałem się, że zwróci 20), w drugim przypadku zwraca abcaaa (czyli po dołączeniu). Jestem także zdziwiony tym zachowaniem. (między mną nie jestem tym, który go przegłosował.).). – JProgrammer
To jest dobre pytanie. Wróciło wspomnienie podstawowych rzeczy. Co z tym jest nie tak ? – Siddharth