逃离美元符号($)在Java歧管字符串模板(manifold.systems)



我添加了歧管。系统Java库到我们的Maven Java项目pom.xml:

<dependency>
<groupId>systems.manifold</groupId>
<artifactId>manifold-ext</artifactId>
<version>${manifold-version}</version>
</dependency>

之后编译以下行:

String foo = "$HIS";

未编译:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /c:/workspaces/dev/src/main/java/com/foo/bar/MyClass.java:[26,24] cannot find symbol
symbol:   variable HIS
location: class com.foo.bar.MyClass
[INFO] 1 error

显然,这是一个流形字符串模板,试图找到一个名为$HIS的变量,它没有在作用域中定义。因此,我需要转义$符号,因为我需要它成为String字面值的一部分。我该怎么做呢?如果我使用$,那么IntelliJ会尖叫"字符串字面量中的非法转义字符"

我发现最优雅的方法是使用来自相同的歧管库的注释@DisableStringLiteralTemplates:

import manifold.rt.api.DisableStringLiteralTemplates;
public class FooExample {
@DisableStringLiteralTemplates
public void sampleMethod() {
String foo = "$HIS";
System.out.println("Foo is " + foo);
}
}

用$转义美元也可以,只是IntelliJ歧管。需要系统插件,IDE才能识别所有的流形Java库的功能。

歧管字符串模板的详细描述可以在这里找到:https://github.com/manifold-systems/manifold/tree/master/manifold-deps-parent/manifold-strings

最新更新