Как я могу поместить переменную в текстовый блок Java?
Как
"""
{
...
"someKey": "someValue",
"date": "${LocalDate.now()}",
...
}
"""
Как я могу поместить переменную в текстовый блок Java?
Как
"""
{
...
"someKey": "someValue",
"date": "${LocalDate.now()}",
...
}
"""
Вы можете использовать %s
в качестве заполнителя в текстовых блоках.
String str = """
{
...
"someKey": "someValue",
"date": %s,
...
}
"""
и замените его, используя формат
String.format(str,LocalDate.now());
Более чистой альтернативой является использование String::replace или String::format следующим образом:
String code = """
public void print($type o) {
System.out.println(Objects.toString(o));
}
""".replace("$type", type);
String code = String.format("""
public void print(%s o) {
System.out.println(Objects.toString(o));
}
""", type);
Другая альтернатива включает введение нового метода экземпляра String::formatted, который можно использовать следующим образом:
String source = """
public void print(%s object) {
System.out.println(Objects.toString(object));
}
""".formatted(type);
Примечание. Но в качестве примечания из java-13 docs String.formatted
устарел и рекомендуется использовать String .format(это, аргументы).
Этот метод связан с текстовыми блоками, функцией языка предварительного просмотра. Текстовые блоки и/или этот метод могут быть изменены или удалены в будущем выпуске.
String.formatted
на самом деле не устарел. Фактически это новый метод (начиная с Java 13). Он устарел только потому, что связан с текстовыми блоками, которые являются функцией предварительного просмотра. Но если вы используете текстовые блоки, вы также можете использовать этот метод.
- person user140547; 26.04.2020
String
. По крайней мере, на данный момент без дополнительных подробностей о том, почему бы не попробовать использовать существующую конструкцию, такую какString.format
, вопрос будет стоять как точная копия. Оставим остальное на усмотрение сообщества. - person Naman   schedule 26.04.2020String.format
больше похоже на обходной путь, который, к сожалению, я не придумал... - person Dennis Gloss   schedule 26.04.2020String::format
не является обходным решением, это обычный способ интерполяции строк в Java. (С текстовыми блоками также была добавлена версия экземпляра, поэтому вы можете сказать"...".formatted(...)
, если предпочитаете цепочку.) - person Brian Goetz   schedule 26.04.2020