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()主键,
不带时区的时间戳不为空时
持续时间\字符串不为空
);“”。格式化(表名);
如果他们还没有,我想他们很快就会。