1. class Tipo {
2. Tipo(String texto) {
3. this(Integer.parseInt(texto));
4. System.out.println("Texto: " + texto);
5. }
6. Tipo(int valor) {
7. this("" + valor);
8. System.out.println("Valor " + valor);
9. }
10. }
11. public class Teste {
12. public static void main(String args[]) {
13. Tipo tipo = new Tipo("15");
14. }
15. }
[color=green]O código compila e roda indefinitivamente, sem imprimir nada.[/color]
O código compila e roda, imprimindo "Texto: 15" uma única vez e termina.
O código compila e roda indefinitivamente, revezando a impressão entre "Texto: 15" e "Valor: 15".
[color=red]O código não compila pois detecta o loop.[/color]
Explicação sobre a resposta
Nem sempre o compilador detecta problemas de loops entre construtores. Portanto, deve-se considerar que o código compila e roda indefinidamente, até ocorrer um erro do tipo StackOverflowError.
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Recursive constructor invocation Tipo(int)
Recursive constructor invocation Tipo(String)
at Tipo.<init>(Xyh.java:3)
at Xyh.main(Xyh.java:13)
sera que a pergunta esta desatualizada? por que parece que o compilador percebeu o loop e nao deixou compilar entao a resposta certa deria a quarta e nao a primeira
