IntelliJ能否将我的旧字符串连接转换为Java 14中预览的新文本块功能?

IntelliJ能否将我的旧字符串连接转换为Java 14中预览的新文本块功能?,java,intellij-idea,java-text-blocks,Java,Intellij Idea,Java Text Blocks,我有这样的现有代码: String sql = "CREATE TABLE " + tableName + " (\n" + " id_ UUID DEFAULT random_uuid() PRIMARY KEY ,\n" + " when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL\n" + " duration_ STRING NOT NULL\n" + ");"; …在IntelliJ

我有这样的现有代码:

String sql = "CREATE TABLE " + tableName + " (\n" +
        "  id_ UUID DEFAULT random_uuid() PRIMARY KEY ,\n" +
        "  when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL\n" +
        "  duration_ STRING NOT NULL\n" +
        ");";
…在IntelliJ 2020.1.1(预览)终极版的一个项目中,JDK设置配置为语言级别
14(预览)-记录、模式、文本块

因此,我希望IntelliJ能够在我点击这行代码旁边的黄色灯泡时,在显示的项目中提供对文本块的转换。但我看不到这样的提议

我很惊讶没有找到这样的报价,JetBrains公司声称在他们的IntelliJ 2020.1版本中提供了支持,正如讨论和讨论的那样

➥ IntelliJ是否提供了将旧字符串连接转换为文本块的方法

披露:IntelliJ IDEA开发者在这里


目前,IntelliJ IDEA仅建议将完整的文字连接转换为文本块。但是,这里有一个包含
tableName
变量的连接。这会阻止开始检查。您可以通过添加假括号来解决此问题:

String sql=“创建表”+tableName+(“(\n”+
id\UUID默认随机\u UUID()主键,\n+
“当没有时区的时间戳不为空\n”+
“持续时间\字符串不为空\n”+
");");
之后,建议在第一个
\n
字符上进行转换:

删除括号后的结果如下所示:

String sql=“创建表”+tableName+“”
(
id_uid默认随机_uid()主键,
不带时区的时间戳不为空时
持续时间\字符串不为空
);""";
我提交了一个建议,如果只有一部分连接可以转换为文本块,则建议进行转换

另一种解决方案,实际上是由JDK推广的,是使用字符串格式。首先,使用意图操作“将“+”替换为“String.format()”(可以通过Alt+Enter在连接中的任何地方使用)。结果如下所示:

String sql=String
.format(“创建表%s(\n id\UUID默认随机\u UUID()主键,\n当\uu没有时间的时间戳时”+
“区域不为空\n持续时间uu字符串不为空\n);”,表名);
现在建议立即使用文本块,结果如下:

String sql=String.format(“”)
创建表%s(
id_uid默认随机_uid()主键,
不带时区的时间戳不为空时
持续时间\字符串不为空
);“”,表名);
不幸的是,不建议使用新的实例方法
.formatted()
,因此需要进行一些手动转换:

stringsql=”“”
创建表%s(
id_uid默认随机_uid()主键,
不带时区的时间戳不为空时
持续时间\字符串不为空
);“”。格式化(表名);

如果他们还没有,我想他们很快就会。