Параметры многострочной аннотации Kotlin
В Java теперь, когда он поддерживает текстовые блоки, вы можете сделать это:
@Schema(description = """
Line one.
Line two.
""")
public void someMethodName() { ... }
В Java текстовые блоки являются константами времени компиляции и автоматически удаляют отступы. Но в Котлине, если вы сделаете это:
@Schema(description = """
Line one.
Line two.
""")
fun someMethodName() { ... }
вы получаете нежелательные пробелы перед каждой строкой. К сожалению, вы не можете использовать
trimMargin()
или же
trimIndent()
потому что они не являются константами времени компиляции. Есть ли способ сделать так, чтобы в Kotlin это выглядело так же красиво, как в Java?
1 ответ
К сожалению, для вашего случая использования, я так не думаю. Смысл тройной кавычки в том, чтобы предоставить способ записи "отформатированного" текста в строку. Если Java не ведет себя так же, как Kotlin, то технически это странно, поскольку любой другой язык, который я использовал, ведет себя так же, как Kotlin. Лучшей альтернативой будет что-то вроде следующего:
@Schema(description = "Line one.\n"
+ "Line two.\n"
+ "Line three.")
fun someMethodName() { ... }
Конкатенация строк будет выполняться во время компиляции, так как она находится между литералами.