对char的XOR不适用于groovy

时间:2011-12-12 17:53:59

标签: groovy xor

为什么这不适用于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的兼容源。

1 个答案:

答案 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版本,因为它没有实现之前。并且这意味着它只有在启用时才有效,这只是特定的情况   的情况。

编辑#2

这看起来像是一个只能通过JVM的某些实现来展示自己的问题。因此,I have posted an issue to the Groovy Jira,希望Groovy的未来版本能够消除差异: - )