Bas*_*que 4 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" +
");";
Run Code Online (Sandbox Code Playgroud)
...在 IntelliJ 2020.1.1(预览版)旗舰版的一个项目中,其中 JDK 设置是针对语言级别配置的14 (Preview) - Records, patters, text blocks。
因此,我希望 IntelliJ 在我单击此行代码旁边出现的黄色灯泡时,在项目显示中提供对文本块的转换。但我看不到这样的提议。
我很惊讶没有找到这样的报价,因为 JetBrains 公司声称在其 2020.1 版 IntelliJ 中支持JEP 368:文本块(第二预览),如此处和此处所述。
? IntelliJ 是否提供某种方法将旧的字符串连接转换为文本块?
披露:IntelliJ IDEA 开发人员在这里。
目前,IntelliJ IDEA 仅建议将完整的文字串联转换为文本块。但是,这里有一个涉及tableName变量的串联。这会阻止检查开始。您可以解决此添加虚假括号的问题:
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" +
");");
Run Code Online (Sandbox Code Playgroud)
之后,建议在第一个\n字符上进行转换:
去掉括号后的结果是这样的:
String sql = "CREATE TABLE " + tableName + """
(
id_ UUID DEFAULT random_uuid() PRIMARY KEY ,
when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL
duration_ STRING NOT NULL
);""";
Run Code Online (Sandbox Code Playgroud)
如果只有一部分连接可以转换为文本块,我提出了一个问题来建议转换。
JDK 提出的另一种解决方案是使用字符串格式化。首先,使用意图操作“将 '+' 替换为 'String.format()'”(可通过 Alt+Enter 在连接内的任何地方使用)。结果如下所示:
String sql = String
.format("CREATE TABLE %s (\n id_ UUID DEFAULT random_uuid() PRIMARY KEY ,\n when_ TIMESTAMP WITHOUT TIME " +
"ZONE NOT NULL\n duration_ STRING NOT NULL\n);", tableName);
Run Code Online (Sandbox Code Playgroud)
现在立即建议使用文本块,结果如下所示:
String sql = String.format("""
CREATE TABLE %s (
id_ UUID DEFAULT random_uuid() PRIMARY KEY ,
when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL
duration_ STRING NOT NULL
);""", tableName);
Run Code Online (Sandbox Code Playgroud)
不幸的是,.formatted()不建议使用新的实例方法(提交另一个问题),因此需要一些手动工作来转换它:
String sql = """
CREATE TABLE %s (
id_ UUID DEFAULT random_uuid() PRIMARY KEY ,
when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL
duration_ STRING NOT NULL
);""".formatted(tableName);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
523 次 |
| 最近记录: |