Only Objects can be popped from, or push onto, a stack. That means I
have to wrap a primitive data type, such as int, with something akin to
Integer before pushing it onto a stack. How can I identify the type
of an object popped from a stack?
Ideally, when you store objects in any type of container, you already
know what their type is, or at least what class they derive from or
what interface they implement. One of the most useful features of
object oriented programming languages is polymorphism. Polymorphism
allows you to define different behaviors for objects, yet access them
in the same way.
For example, the AWT Component paint() method will
draw a component. Yet a List looks different from a Button. If you
are writing one of those rare programs where you need to store
multiple objects of undetermined types in a container, you can resort
to using the instanceof operator to identify the type of object you
are dealing with. For example:
if (obj instanceof Integer) ...
This will tell you if an object is an Integer. The instanceof operator can
have a relatively high overhead if used excessively, so you should try
to structure your programs so as not to require its use.