Problem z instanceof

skytrack
2013-01-30 19:10
skytrack
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...

edytowany 1x, ostatnio: bogdans, 2016-12-13 18:26

Pozostało 580 znaków

skytrack
2013-01-30 19:14
skytrack
0

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

Pozostało 580 znaków

2013-01-31 11:01

Rejestracja: 11 lat temu

Ostatnio: 3 lata temu

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.


Pozostało 580 znaków

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