I found a mock exam online somewhere supposedly from the upcoming
java 5.0 certification book by K&B containing the following question. The correct answers are supposed to be A, E, and F, but I don't see how E or F could be correct since the sets are untyped, and even if they were, then why wouldn't D be correct? And furthermore, although i can beleive that B is wrong, i could use an explanation as to exactly why.
11. Given:
1. import java.util.*;
1. import java.util.*;
2. public class Fruits {
3. public static void main(
String [] args) {
4. Set c1 = new TreeSet();
5. Set o1 = new TreeSet();
6. bite(c1);
7. bite(o1);
8. }
9. // insert code here
10. }
11. class Citrus { }
12. class Orange extends Citrus { }
Which, inserted independently at line 9, will compile? (Choose all that apply.)
A). public static void bite(Set<?> s) { }
B). public static void bite(Set<Object> s) { }
C). public static void bite(Set<Citrus> s) { }
D). public static void bite(Set<? super Citrus> s) { }
E). public static void bite(Set<? super Orange> s) { }
F). public static void bite(Set<? extends Citrus> s) { }
G). Because of other errors in the code, none of these will compile.
The original mock exam can be found at
http://www.javabeat.net/javabeat/scjp5/mocks/index.php?page=mock2