Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Parentheses around data type?

Tags:

java

I am a beginning programmer and came across this in my textbook:

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

IntElement is a subclass of DataElement. num is an int storing a value for a linked list.

What is the purpose of (IntElement) after temp =? What would be wrong with IntElement temp = otherElement? And, in general, what does putting a data type in parentheses like that do?

like image 812
aearon Avatar asked Feb 18 '12 21:02

aearon


1 Answers

This is called casting, see here:

  • http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html

Basically, by doing this:

IntElement temp = (IntElement) otherElement;  

you are telling compiler to ignore the fact you declared otherElement as DataElement and trust you it is going to be an IntElement and not DataElement or some other subclass of DataElement.

You cannot do just IntElement temp = otherElement; as this way you would make otherElement, which was defined as DataElement become some other element, in this case IntElement. This will be a big blow to type-safety, which is the reason types are defined at the first place.

This could technically be done using type inference:

  • http://en.wikipedia.org/wiki/Type_inference

however Java does not support that and you have to be explicit.

If it's possible to get other elements, you may want to use instanceof to check the type runtime before casting:

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

At some point after you go through this, you might want to take a look at generics, too:

  • http://en.wikipedia.org/wiki/Generics_in_Java
like image 108
icyrock.com Avatar answered Oct 17 '22 11:10

icyrock.com