Pessoal bom dia!
É o seguinte, estou tentando resolver um exercício da página 156 do livro da Kathy Sierra. Meu problema é o seguinte, estou achando que há um erro neste exercício. Eis o exemplo dado no livro:
Dado o código a seguir:
public class Fizz {
int x = 5;
public static void main(String args[]){
final Fizz f1 = new Fizz();
Fizz f2 = new Fizz();
Fizz f3 = FizzSwicth(f1, f2);
System.out.println((f1==f3)+" "+ (f1.x == f3.x));
}
static Fizz FizzSwicth(Fizz x, Fizz y){
}
}
Qual é o resultado?
A. true, true
B. false true.
C. true false
D. false false
E. A compilação falha.
F. É lançada uma exceção no tempo de execução.
RESPOSTA: A.
Já achei estranho o código acima no método FizzSwitch porque o compilador já acusaria um erro já que não tem retorno no método. Então eu suponho que falta um código no método FizzSwitch. O que este método deveria retornar? Se retornasse o valor x como no exemplo seguinte:
public class Fizz {
int x = 5;
public static void main(String args[]){
final Fizz f1 = new Fizz();
Fizz f2 = new Fizz();
Fizz f3 = FizzSwicth(f1, f2);
System.out.println((f1==f3)+" "+ (f1.x == f3.x)); //true, true
}
static Fizz FizzSwicth(Fizz x, Fizz y){
return x;
}
}
O valor seria true, true.
Mas se retornasse y, o valor seria false true.
public class Fizz {
int x = 5;
public static void main(String args[]){
final Fizz f1 = new Fizz();
Fizz f2 = new Fizz();
Fizz f3 = FizzSwicth(f1, f2);
System.out.println((f1==f3)+" "+ (f1.x == f3.x)); //false, true
}
static Fizz FizzSwicth(Fizz x, Fizz y){
return y;
}
}
Então a menos que esteja enganado, este exercício está com um erro certo?