What will be the result of attempting to compile the following code?
class Vehicle { } class Car extends Vehicle { } class Sedan extends Car { } class Garage<V> { private V v;/*from w w w. java 2 s. c o m*/ public V get() { return this.v; } public void put(V v) { this.v = v; } } public class Main { private Object object = new Object(); private Vehicle vehicle = new Vehicle(); private Car car = new Car(); private Sedan sedan = new Sedan(); public void doA(Garage g) { g.put(object); // (1) g.put(vehicle); // (2) g.put(car); // (3) g.put(sedan); // (4) object = g.get(); // (5) vehicle = g.get(); // (6) car = g.get(); // (7) sedan = g.get(); // (8) } }
Select the two correct answers.
put()
method in statements (1) - (4) will compile.(a) and (b)
The type of reference g is of raw type Garage.
We can put any object in such a garage, but only get Objects out.
The type of value returned by the get()
method in statements (6) - (8) is Object and, therefore, not compatible for assignment to Vehicle, Car, and Sedan.