我正在尝试将我用C ++编写的paren balancer转移到Java。
我正在尝试使用Deque接口中的ArrayDeque类来实现堆栈,方法是声明一个像这样的字符的ArrayDeque:
Deque<char> parens = new ArrayDeque<char>();
并且编译器对它进行了扼杀声称
expected: reference
found: char
我错过了什么?
答案 0 :(得分:7)
您不能将原始类型用作通用参数。您需要相应的Object包装器:
Deque<Character> parens = new ArrayDeque<Character>();
让我们更新我们的Box类以使用泛型。我们先创建一个 通过将代码
public class Box
更改为通用类型声明public class Box<T>
;这引入了一个名为T
的类型变量, 可以在课堂内的任何地方使用。同样的技术也可以 也适用于接口。没有什么特别复杂的 关于这个概念。事实上,它与你已经完全相似 了解一般的变量。只需将T
视为一种特殊的类型 变量,其“值”将是您传入的任何类型;这可以 任何类类型,任何接口类型,甚至是其他类型变量。的它 只是不能是任何原始数据类型。在这种情况下,我们 还要说T
是Box类的正式类型参数。
请参阅:
答案 1 :(得分:0)
您需要在Java中使用ArrayDeque<Character>
。