Vector v declares a variable 'v' that has the type Vector (not Vector<Integer>). The compiler treats this as any other legacy (pre-generics) Vector, so anything you get anything out of 'v' will be a reference of type Object, and you need to explicitly downcast to the actual type.
When you declare the variable using generics, Vector<Integer> v, this tells the compiler that it needs to do some extra work. In this case, when you get something out of 'v' the compiler knows that it's (supposed to be) an Integer, and it inserts the downcast for you behind the scenes.
(Edit: Disabled smilies.) [ November 05, 2008: Message edited by: marc weber ]
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org