Arquivo de 17 de Maio de 2006

Erro em livro

É tão estranho encontrar um erro em um livro…
Hoje estava estudando no livro Sun Certified Programmer for Java 5 Study Guide e encontrei um erro em uma das questões do livro. Conferi em um fórum no qual o autor reconheceu o problema e alterou o enunciado.

Vejam se vocês conseguem achar o problema. :)
Aviso: Não é elementar.


public class CardBoard {
	Short story = 5;
	CardBoard go(CardBoard cb) {
		cb = null;
		return cb;
	}

	public static void main(String[] args) {
		CardBoard c1 = new CardBoard();
		CardBoard c2 = new CardBoard();
		CardBoard c3 = c1.go(c2);
		c1 = null;
		// do Stuff
	}

	// When // do Stuff is reached, how many objects are eligible for GC?
	//   A. 0
	//   B. 1
	//   C. 2
	//   D. Compilation fails.
	//   E. It is not possible to know.
	//   F. An exception is thrown at run time.
	//
	// Answerer: C is correct. Only one CardBoard object (c1) is eligible,
	// but it has an associated Short wrapper object that is also eligible.
}

A questão é: por que a resposta do livro está errada?

.
.
.
.
.
.
.
.
.
.
.
.

Por causa de um detalhe insignificante: Objetos wrapper das classes Boolean, Byte, Short e alguns das classes Integer e Character (os que estiverem entre -128 e 127) são compartilhados.
Isso significa que só há um objeto Short no exemplo e assim, c2 mantém uma referência para ele. O único objeto que pode ser coletado é o que era referenciado por c1. A resposta é a letra B.

4 comentários 17 de Maio de 2006 às 14:23 Thiago


Calendário

Maio 2006
S T Q Q S S D
« Abr   Jun »
1234567
891011121314
15161718192021
22232425262728
293031  

Minhas Publicações Recentes

Publicações por Mês

Estatísticas

Meta