对char的XOR不适用于groovy

fix*_*ain 3 groovy xor

为什么这不适用于groovy?

  ('a' as char) ^ ('b' as char)?
Run Code Online (Sandbox Code Playgroud)

它提出来了

  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)
Run Code Online (Sandbox Code Playgroud)

据我所知,它打破了java的兼容源.

tim*_*tes 5

适用于Groovy 1.8.4:

println( ('a' as char) ^ ('b' as char) )
Run Code Online (Sandbox Code Playgroud)

版画

3
Run Code Online (Sandbox Code Playgroud)

Groovy有很多地方,源代码与Java不兼容.可以在这里找到一个列表,也有没有do...while循环等的东西......

编辑

Groovy项目技术负责人Jochen Theodorou 回复了名单上的邮件:

目前"正确"的方式是

println(('a'as int)^('b'as int))

它应该仍然打印3.为什么它有时工作,有时不工作......我认为这是因为我不小心实现了原始优化.这意味着你可以在以后的1.8版本中得到它,因为它没有实现.这意味着它只有在启用时才有效,仅在特定情况下才是这种情况.

编辑#2

这看起来像一个只能通过JVM的某些实现来展示自己的问题.因此,我已经向Groovy Jira发布了一个问题,所以希望Groovy的未来版本能够消除一些差异:-)