2012-02-18 22 views
8

Jestem początkujący programista i natknąłem się na to w moim podręczniku:Nawiasy wokół typu danych?

public boolean equals(DataElement otherElement) 
{ 
    IntElement temp = (IntElement) otherElement;    
    return (num == temp.num); 
} 

IntElement jest podklasą DataElement. num to int przechowujące wartość dla połączonej listy.

Jaki jest cel (IntElement) po temp =? Co byłoby nie tak z IntElement temp = otherElement? I na ogół, co robi umieszczanie typu danych w nawiasach podobnych do tego?

Odpowiedz

8

Nazywa się to odlew, zobacz tutaj:

Zasadniczo, w ten sposób:

IntElement temp = (IntElement) otherElement; 

mówisz kompilator zignorować fakt zadeklarowanej otherElement jako DataElement i wierzę, że będzie to IntElement, a nie DataElement lub innej podklasy z DataElement.

nie można zrobić tylko IntElement temp = otherElement; w ten sposób będzie można zrobić otherElement, który został zdefiniowany jako DataElement stać jakiś inny element, w tym przypadku IntElement. To będzie duży cios dla bezpieczeństwa typu, z powodu którego typy są definiowane na pierwszym miejscu.

Można to zrobić za pomocą technicznie wnioskowanie typu:

jednak Java nie obsługuje tego i trzeba być jednoznaczne.

Jeśli jest to możliwe, aby uzyskać inne elementy, można użyć instanceof sprawdzić czas podtrzymania Typ zanim rzucania:

  • Operatorzy/TheinstanceofKeyword.htm "> http://www.java2s.com/Tutorial/Java/0060_Operators/TheinstanceofKeyword.htm

W pewnym momencie po przejściu przez to, warto przyjrzeć się generyków też:

2

Celem (IntElement) po temp wykonuje konwersję typu, bardziej technicznie, o cast, gdzie mówisz, że otherElement, która jest parametrem typu DataElement, powinny być traktowane jako przedmiot bardziej konkretny typ IntElement.

1

jmein jest poprawny, mówi kompilatorowi/interpreterowi, aby zamienić jeden typ zmiennej na inny. W rzeczywistości mówi procesorowi, aby traktował to jako inny typ. W C jest to błogosławieństwo i przekleństwo, w Javie, co wygląda na to, że piszesz, MUSISZ rzucić zmienną, by potraktować to inaczej.

Powiązane problemy