由于Java 5出来后,我看到几十人不明白为什么,给定一个接口I和类A以及B extends A不能传递的I<B>,其中一个I<A>是必需的.很多人发现它违反直觉.
为了测试一个人的能力,推理有关泛型的话,我会先问他们,如果它是可能的一个分配I<B>给I<A>上述的参考.如果没有,为什么不呢?如果他们弄错了,告诉他们他们错了,并要求他们尝试填写这里的空白,以说明为什么这个例子如果可以编译就是不安全的:
//...
List<String> list = new LinkedList<String>();
someMethod(list);
//blank 1
}
public void someMethod(List<Object> list) {
//blank 2
}
Run Code Online (Sandbox Code Playgroud)
在这一点上它应该很容易,如果他们不能构建这样的例子,我会有点担心.一个例子是
//blank 1
String item = list.get(0);
//blank 2
list.add(Integer.valueOf(5));
Run Code Online (Sandbox Code Playgroud)
这个测试:
http://tests4geeks.com/test/java
包含一些关于注释的问题.
它不包含任何有关通用的问题.但是,除了它,还有一些其他有趣的主题,如:
多线程,
记忆,
算法和数据结构,
OOP,
等等