披露: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" +
");");
之后,建议在第一个\n
字符上进行转换:
去掉括号后的结果如下:
String sql = "CREATE TABLE " + tableName + """
(
id_ UUID DEFAULT random_uuid() PRIMARY KEY ,
when_ TIMESTAMP WITHOUT TIME ZONE NOT NULL
duration_ STRING NOT NULL
);""";
如果只有部分连接可以转换为文本块,我提出了一个建议转换的问题。
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);
现在立即建议使用文本块,结果如下所示:
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);
.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);