【发布时间】:2013-12-19 18:50:34
【问题描述】:
我已经尝试了这两段代码,但我都收到了错误。 下面附上我得到的两个部分和两个错误。 我将不胜感激任何关于为什么会发生这种情况的见解。
示例 1
static List<String> list = new ArrayList<String>();
public static void main(String[] args) {
func(list);
}
private static void func(List<Object> lst) {
}
错误:
The method func(List<Object>) in the type is not applicable for the arguments (List<String>)
示例 2
static List<Object> list = new ArrayList<Object>();
public static void main(String[] args) {
func(list);
}
private static void func(List<String> lst) {
}
错误:
The method func(List<String>) in the type is not applicable for the arguments (List<Object>)
【问题讨论】:
-
泛型不是协变的!也就是说,
List<Object>不能替换为List<String>或其他方式! -
您不能使第二个功能具有相同的语义。如果您将 func 声明为
private static void func(List<?> lst),第一个应该可以工作
标签: java generics collections