char 上的 XOR 不适用于 groovy

发布于 2024-12-20 20:29:07 字数 491 浏览 3 评论 0原文

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

Why this does not work with groovy?

  ('a' as char) ^ ('b' as char)​

It raises

  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)

As far as i know it breaks compatible source with java.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光无声 2024-12-27 20:29:07

适用于 Groovy 1.8.4:

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

打印

3

Groovy 有很多地方源代码与 Java 不兼容。 列表可以在这里找到,也有类似 no do 的内容。 ..while 循环等...

编辑

Groovy 项目技术负责人 Jochen Theodorou 回复列表上的邮件

目前“正确”的方式是

println( ('a' 作为 int) ^ ('b' 作为 int) )

它仍然应该打印 3。至于为什么它有时会起作用以及
有时不是......我想那是因为我不小心实现了
用于原始优化。这意味着您稍后会收到此信息
1.8版本,因为之前没有实现。这意味着只有在启用它们的情况下它才起作用,只有在特定的情况下才会出现这种情况
情况。

编辑 #2

这看起来像是一个仅在 JVM 的某些实现中才会出现的问题。因此,我已经向 Groovy Jira 发布了一个问题,所以希望将来能够解决Groovy 的版本会稍微消除差异:-)

Works with Groovy 1.8.4:

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

prints

3

Groovy has quite a few places where the source is incompatible from Java. A list can be found here, there are also things like no do...while loop, etc...

Edit

Jochen Theodorou, the Groovy Project Tech Lead replied to the mail on the list:

the currently "right" way is

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

and it should still print 3. As of why it works sometimes and
sometimes not... I think that is because I accidentally implemented
that for the primitive optimizations. That means you get this in later
1.8 versions, because before it was not implemented. And it means it works only if they are enabled, which is the case in only specific
situations.

Edit #2

This is looking like an issue that only shows itself with certain implementations of the JVM. As such, I have posted an issue to the Groovy Jira, so hopefully future versions of Groovy will smooth out the differences a bit :-)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文