The method func(List<Object>) in the type is not applicable for the arguments (List<String>)
本问题已经有最佳答案,请猛点这里访问。
我试过这两段代码,但都有错误。下面所附的是我正在得到的两个片段和两个错误。我很感激你对这件事的原因有任何了解。
例1
1 2 3 4 5 6 7 8 | 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
例2
1 2 3 4 5 6 7 8 | 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 ) in the type is not applicable for the arguments (List
该方法不适用,因为
为什么不能将
1 2 3 4 5 6 |
只有当方法无法修改传递的列表时,这才是安全的。不幸的是,大多数Java类都是可变的,大多数列表实现也是可变的。
为什么不能将
1 2 3 4 |
您应该基本上了解泛型的用途及其工作原理:
1 | List<String> list = new ArrayList<String>(); |
意味着此列表只能包含字符串列表,并且只能传递给接受
为了使函数更通用,可以使用:
1 2 3 | function (List<?> list) { //body } |
1 2 3 4 5 6 7 8 9 10 11 | static List<Object> list = new ArrayList<Object>(); public static void main(String[] args) { func(list); } private static void func(List<Object> lst) { } |
这应该与正确的导入(Java UTIL)一起使用。
不能将