来自 Effective Java 第 5 章(泛型):
// Two possible declarations for the swap method public static <E> void swap(List<E> list, int i, int j); public static void swap(List<?> list, int i, int j);
这两个声明中哪一个更可取,为什么?在公共 API 中,第二个更好,因为它更简单。你传入一个列表——任何列表——并且该方法交换索引元素。无需担心类型参数。通常,如果类型参数在方法声明中只出现一次,请将其替换为通配符。
我不明白,为什么第二个选项对我的 API 客户端更简单?我可以将相同的参数传递给第一种和第二种方法。第二个还需要用于通配符捕获的辅助方法。有人可以解释为什么推荐第二个吗?谢谢!