Problem z instanceof

0

Witam.
Otóż mam problem z operatorem instanceof

Mam klasę abstrakcyjną Auto. Jej podklasami są Audi i Star i teraz mam taki kawałek kodu.

public static void main(String[] args)
	{
		
		Auto[] a=new Auto[2];
		a[0]=new Audi("Audi","A4",120000.00,200);
		a[1]=new Star("Star","R1",200000.00,1000);
		
		for(Auto e:a)
			System.out.println(e.getOpis());
		 
		//if(a[0] instanceof Audi)		
			Audi a1=(Audi) a[0];
		
		a1.getPojemnoscBagaznika();
		
	}

Gdy od komentuje warunek to pojawia sie bląd = not a statement Audi a1=(Audi) a[0];
Gdy zakomentuje wszystko idzie poprawnie to znaczy Auto konwertoruje się na Audi i mogę wywołać getPojemnośc...

0

Już sobie poradziłem. Trzeba wszystkie instrukcje w warunku umieścić.

1

Generalnie coś takiego jest przez Javę traktowane jako błąd składniowy:

if (condition)
    int foo = 2;

W przeciwieństwie do czegoś takiego:

if (condition) {
    int foo = 2;
}

Co ma sporo sensu. W pierwszym przypadku po if może występować tylko i wyłącznie jedna instrukcja, więc definicja nowej zmiennej nie ma najmniejszego sensu – i tak zaraz po wyjściu z if wyjdzie poza zakres i nie będzie dostępna. W przypadku drugim po if występuje blok, gdzie definicja zmiennej może mieć sens, bo może zostać wykorzystana dalej w tym samym bloku.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.