无法将ArrayList<char>
定义为validate
的参数。为什么不能这样做?尝试ArrayList<?>
时,它有效。为什么?应该使用ArrayList<?>
代替ArrayList<char>
吗?有什么区别?
public boolean validate(ArrayList<char> args){ ... }
错误:Syntax error on token "char", Dimensions expected after this token
答案 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>
)时,您需要使用对象。 char
和Character
之间的区别在于Character
是一个对象,并且允许在通用对象中使用。
作为参考,每个基元类型都有自己的包装器对象。你可以查看here。
答案 4 :(得分:1)
Java中的char包装类是Character,在添加char对象或验证ArrayList中的char对象时,应将char指定为Character。
ArrayList<Character>list = new ArrayList<Character>();