不能使用char类型的ArrayList作为方法的参数

时间:2012-05-07 13:40:47

标签: java generics

无法将ArrayList<char>定义为validate的参数。为什么不能这样做?尝试ArrayList<?>时,它有效。为什么?应该使用ArrayList<?>代替ArrayList<char>吗?有什么区别?

public boolean validate(ArrayList<char> args){ ... }

错误:Syntax error on token "char", Dimensions expected after this token

5 个答案:

答案 0 :(得分:14)

public boolean validate(List<Character> args){ ... }

必须是包装类型 - Character - List<Character>。您不能将泛型与原始类型一起使用。

答案 1 :(得分:7)

public boolean validate(ArrayList<Character> args){ ... }

在java中使用generic时,你不能使用原始数据类型,但你可以使用Character,它是表示原始char的Object,内存开销很小。

答案 2 :(得分:1)

你可以尝试这样做:public boolean validate(ArrayList<Character> args){ ... }

答案 3 :(得分:1)

通常,当您处理通用对象(例如ArrayList<T>)时,您需要使用对象。 charCharacter之间的区别在于Character是一个对象,并且允许在通用对象中使用。

作为参考,每个基元类型都有自己的包装器对象。你可以查看here

答案 4 :(得分:1)

Java中的char包装类是Character,在添加char对象或验证ArrayList中的char对象时,应将char指定为Character。

ArrayList<Character>list = new ArrayList<Character>();