我正在尝试将我用C++编写的paren平衡器迁移到Java。
我尝试使用Deque接口中的ArrayDeque类来实现堆栈,方法是声明一个字符的ArrayDeque,如下所示:
Deque<char> parens = new ArrayDeque<char>();
而编译器却在它上面断言
expected: reference
found: char
我遗漏了什么?
发布于 2011-09-03 00:07:35
您不能将原始类型用作泛型参数。您需要相应的对象包装器:
Deque<Character> parens = new ArrayDeque<Character>();让我们更新我们的
类来使用泛型。我们将首先通过将代码
public class Box更改为public class Box<T>来创建一个泛型类型声明;这将引入一个名为T的类型变量,它可以在类中的任何位置使用。同样的技术也可以应用于接口。关于这个概念没有什么特别复杂的。实际上,它与您对变量的一般了解非常相似。只需将T看作一种特殊类型的变量,它的“值”将是您传入的任何类型;这可以是任何类类型、任何接口类型,甚至是另一个类型变量。它不能是任何原始数据类型。在这个上下文中,我们也说T是类的形式类型参数。[来源:Java Tutorial : Generics : Generic Types]
请参见:
发布于 2011-09-03 00:08:11
你需要在Java中使用ArrayDeque<Character>。
https://stackoverflow.com/questions/7286200
复制相似问题