java下划线的转义_在Scala中转义Java互操作性的下划线

更新时间:2023-05-16 03:33:04 阅读: 评论:0

java下划线的转义_在Scala中转义Java互操作性的下划线假设我有⼀些Scala代码调⽤⼀个使⽤_作为标识符的Java库(⽽且这是⼀个很长的故事)。这是⼀个简化的例⼦:
public class StupidUnderscore {
public static String _() { return "Plea give me a real name!"; }
撑的意思
}
没问题吧?只是逃避它:
论语学而篇原文scala> StupidUnderscore.`_`
res0: String = Plea give me a real name!
这⼀直是有效的,直到今天早上我尝试更新Scala 2.10.2:
帅气的英文名字scala> StupidUnderscore.`_`
:1: error: wildcard invalid as backquoted identifier
StupidUnderscore.`_`
^
这是由于在2.10.1中出现的a change,修复了this issue.从提交消息:
Prohibit _ as an identifier, it can only bring badness.
嗯,当然,但我不知道为什么这意味着我⽆法逃避它 – 我认为这是背后的引⽤。
我要写⼀个Java包装器才能使它⼯作吗?有没有其他⽅法可以在Scala中引⽤Java库的_⽅法?
作为脚注,我已经确认可以解决这个问题,⽽⽆需编写任何新的Java:
object AwfulMacroHack {
肥槽回填import perimental.macros
flect.macros.Context
def _impl(c: Context) = {
import c.univer._
万古长存>晨钟暮鼓
c.Expr[String](
Select(Ident(newTermName("StupidUnderscore")), newTermName("_"))排骨玉米海带汤
)
}
def `I'm not named _!` = macro _impl
}
接着:
scala> AwfulMacroHack.`I'm not named _!`
res0: String = Plea give me a real name!
山樵不过,我不确定这不是Java助⼿解决⽅案那么糟糕。

本文发布于:2023-05-16 03:33:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/902023.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图