public class Item {}
public class Book extends Item {
public String title() { return "Book"; }
}
public class Toy extends Item {
public String name() { return "Toy"; }
}
public static String describe(Item i) {
if (i instanceof Book) return ((Book) i).title();
if (i instanceof Toy) return ((Toy) i).name();
return "?";
}
// Usage:
System.out.print(describe(new Toy()));What is printed?
- A
Book
- B
?
- C
ClassCastException
- Dcheck_circle
Toy
Explanation
instanceof Book is false; instanceof Toy is true; the cast succeeds and name() returns "Toy".