我正试图将我用C++编写的paren balancer转移到Java.
我试图通过声明一个像这样的字符的ArrayDeque来从Deque接口实现带有ArrayDeque类的堆栈:
Deque<char> parens = new ArrayDeque<char>();
并且编译器对它进行了扼杀声称
expected: reference
found: char
我错过了什么?
您不能将原始类型用作通用参数.您需要相应的Object包装器:
Deque<Character> parens = new ArrayDeque<Character>();
Run Code Online (Sandbox Code Playgroud)
让我们更新我们的Box类以使用泛型.我们将首先创建通过改变代码中的泛型类型声明
public class Box来public class Box<T>; 这引入了一个名为的类型变量,T可以在类中的任何位置使用.这种技术也可以应用于接口.这个概念并没有什么特别复杂的.实际上,它与您对变量的一般知识非常相似.只需将其T视为一种特殊的变量,其"价值"将是您传递的任何类型; 这可以是任何类类型,任何接口类型,甚至是其他类型变量.它不能是任何原始数据类型.在这种情况下,我们还说这T是Box类的正式类型参数.[来源:Java教程:泛型:通用类型 ]
看到: