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() { ... }
字符串连接将在编译时执行,因为它在文字之间。
在 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() { ... }
字符串连接将在编译时执行,因为它在文字之间。