Java OCA OCP Practice Question 2309

Question

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.

  • (a) The call to the put() method in statements (1) - (4) will compile.
  • (b) The assignment statement (5) will compile.
  • (c) The assignment statements (6), (7), and (8) will compile.


(a) and (b)

Note

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.




PreviousNext

Related