Параметры многострочной аннотации 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() { ... }

Конкатенация строк будет выполняться во время компиляции, так как она находится между литералами.

Другие вопросы по тегам