为什么这不适用于groovy?
('a' as char) ^ ('b' as char)
提出
groovy.lang.MissingMethodException: No signature of method: java.lang.Character.xor() is applicable for argument types: (java.lang.Character) values: [b]
Possible solutions: div(java.lang.Character), any(), any(groovy.lang.Closure), plus(java.lang.Character), is(java.lang.Object), use([Ljava.lang.Object;)
at Script1.run(Script1.groovy:2)
据我所知,它破坏了java的兼容源。
答案 0 :(得分:5)
适用于Groovy 1.8.4:
println( ('a' as char) ^ ('b' as char) )
打印
3
Groovy有很多地方,源代码与Java不兼容。一个list can be found here,还有没有do...while
循环等的东西......
Groovy项目技术负责人Jochen Theodorou replied to the mail on the list:
目前“正确”的方式是
println(('a'as int)^('b'as int))
它应该仍然打印3.为什么它有时会起作用 有时不...我认为那是因为我不小心实施了 对于原始优化而言。这意味着你以后会得到这个 1.8版本,因为它没有实现之前。并且这意味着它只有在启用时才有效,这只是特定的情况 的情况。
这看起来像是一个只能通过JVM的某些实现来展示自己的问题。因此,I have posted an issue to the Groovy Jira,希望Groovy的未来版本能够消除差异: - )