Kotlin 多行字符串注解参数

Kotlin multiline-string annotation parameters

在 Java 中,现在它支持文本块,您可以这样做:

@Schema(description = """
            Line one.
            Line two.
            """)
public void someMethodName() { ... }

在Java中,文本块是编译时常量,它们会自动删除缩进。但是在 Kotlin 中,如果你这样做:

@Schema(description = """
            Line one.
            Line two.
            """)
fun someMethodName() { ... }

你最终在每行前面都有不需要的空格。不幸的是,您不能使用 trimMargin()trimIndent(),因为它们不是编译时常量。有没有办法让它在 Kotlin 中看起来和在 Java 中一样漂亮?

不幸的是,对于您的用例,我不这么认为。三引号的要点是提供一种将“格式化”文本写入字符串的方法。如果 Java 的行为方式与 Kotlin 不同,那么从技术上讲,它是奇怪的,因为我使用的任何其他语言的行为方式都与 Kotlin 相同。您最好的选择如下所示:

@Schema(description = "Line one.\n"
                    + "Line two.\n"
                    + "Line three.")
fun someMethodName() { ... }

字符串连接将在编译时执行,因为它在文字之间。