Wywoływanie konstruktora w konstruktorze za pomocą this;

0

Treść zadania z książki Bruce Eckel'a:
"Napisz klasę z dwoma przeciążonymi konstruktorami. Stosując this, wywołaj drugi konstruktor z wnętrza pierwszego."
Próbowałem ale jakkolwiek bym tego nie zrobił wyskakuje mi błąd.
W jaki sposób mógłbym użyć this; w tym kodzie aby działał?

class Con{
	Con(String s, int i){
	Con(i);
	System.out.println(s + i);
		}
	Con(int i){
    i++;
	}
}
public class ExerciseTwoOverloaded {
public static void main(String[] args){
	int i = 10;
	String s = "liczba:";
	Con(s, i);
}
}
//
0
class Con{
	Con(String s, int i){
		this(i);
		System.out.println(s + i);
    }
	
	Con(int i){
		i++;
	}
}
public class Test {
	public static void main(String[] args){
		int i = 10;
		String s = "liczba:";
	    new Con(s, i);
	}
}

tyle, że "i++" de facto nic nie robi, bo w Javie argumenty są przekazywane przez wartość.

0

Zmieniłem na coś takiego, nie wiem jaki będzie wynik, bo nie chcę mi skompilować.

class Con{
	Con(String s, int i){
	this(i);
	System.out.println(s + i);
	}
	Con(int i){
	i=10;
}}
public class ExTwoOverloaded {
public static void main(String[] args){
	new Con("Liczba", 9);
}
}
//

Wyskakuje mi komunikat "Description Resource Path Location Type
A class file was not written. The project may be inconsistent, if so try refreshing this project and building it ExTwoOverloaded.java /ExerciseTwoOverloaded/src Unknown Java Problem".
To samo z twoim kodem.

0

O dziwo mi też coś takiego wyskoczyło. Cleaning nie pomógł. Znalazłem to:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=123322
Choć nie do końca pasuje do naszej sytuacji - tam problemem ponoć były zbyt długie nazwy klas lub metod. Ma ktoś jakieś pomysły co może być przyczyną, albo jak to rozwiązać, oprócz, oczywiście przeniesienia drugiej klasy do oddzielnego pliku?

1

Pewnie nie wolno Wam tworzyć klasy o nazwie Con:
http://www.coderanch.com/t/384438/java/java/create-class-Con

1 użytkowników online, w tym zalogowanych: 0, gości: 1