public static void reverse(List<?> list)
{
List<Object> tmp = new ArrayList<Object>(list);
for (int i = 0; i < list.size(); i++)
{
list.set(i, tmp.get(list.size()-i-1)); // compile-time error , why ?
}
}
我正在学习泛型。我知道当使用通配符 ? 时,它会被替换为适当的类型。当调用 reverse() 方法时,? 将得到替换,由于每种类型都是 Object 的子类型,因此不应该出现错误。我需要一份清晰易懂的解释,请帮忙。
List<?>
是一个无界通配符。这意味着你只能将null
插入到列表中。 - Tim Biegeleisen?
。它不会被替换,而是用来标识一个未知量。 - Andreas