[英]HashMap defined using groovy syntax not working with Character Keys
Does groovy not have matured support for generics? groovy 是否没有对 generics 的成熟支持? If I am explicitly saying I want a Map<Character, Character> will it not respect it?如果我明确说我想要一个 Map<Character, Character> 会不会尊重它?
The below code fails because map.get(Character) is giving me null.下面的代码失败,因为 map.get(Character) 给了我 null。 When I use Map<String, String> it works.当我使用 Map<String, String> 时,它可以工作。
String eq = "{([])}"
Map<Character, Character> map = [ '}':'{', ')': '(', ']': '[' ]
Stack<Character> stack = new Stack();
Character[] arr = eq.toCharArray();
for (int i = 0 ; i < arr.length; i++) {
Character c = arr[i]
if (stack.isEmpty()) {
stack.push(c)
} else { // check for the end
char c1 = stack.peek()
**// map.get(c) is null here**
if (c1 == map.get(c)){
stack.pop()
} else {
stack.push(c)
}
}
}
if (stack.isEmpty()) {
println "Balanced Eq"
} else {
println "Not Balanced Eq"
}
Groovy uses '
for string literals and not for chars (like Java). Groovy 使用'
表示字符串文字而不是字符(如 Java)。 "
-literals allow ${}
replacements, '
-literals don't. "
-literals 允许${}
替换, '
-literals 不允许。
If you want those error catched, you most likely want to add TypeChecked
or CompileStatic
as compiler option or as annotations on the places, that depend on it.如果您希望捕获这些错误,您很可能希望添加TypeChecked
或CompileStatic
作为编译器选项或作为依赖于它的位置的注释。 The default, "dynamic" Groovy does not care much for generics.默认的“动态”Groovy 不太关心 generics。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.