Давайте сделаем String
s короче.
String jsonLiteral = ""
+ "{\n"
+ "\tgreeting: \"Hello\"\n"
+ "}\n";
String jsonBlock = """
{
greeting: "Hello"
}
""";
Давайте отладим их и напечатаем их фактическое содержимое.
"{\n\tgreeting: \"Hello\"\n}\n"
"{\n greeting: \"Hello\"\n}\n"
\t
и " "
(четыре ASCII SPсимволы или четыре пробела) не равны, равно как и целые String
с.Как вы, возможно, заметили, отступ в текстовом блоке был образован пробелами (а не горизонтальными табуляциями, или фидами форм, или любыми другими символами, похожими на пробелы).
Вот несколько примеров текстовых блоков из спецификация для JEP 355 :
String season = """
winter"""; // the six characters w i n t e r
String period = """
winter
"""; // the seven characters w i n t e r LF
String greeting =
"""
Hi, "Bob"
"""; // the ten characters H i , SP " B o b " LF
String salutation =
"""
Hi,
"Bob"
"""; // the eleven characters H i , LF SP " B o b " LF
String empty = """
"""; // the empty string (zero length)
String quote = """
"
"""; // the two characters " LF
String backslash = """
\\
"""; // the two characters \ LF
В вашем случае
String jsonBlock = """
{
greeting: "Hello"
}
"""; // the 26 characters { LF SP SP SP SP g r e e t i n g : SP " H e l l o " LF } LF
Чтобы сделать их равными,замените "\t"
на " "
.И equals
, и ==
должны возвращать true
, хотя вы не должны полагаться на последнее.
Чтобы прочитать:
- Спецификация для JEP 355: текстовые блоки (предварительный просмотр)
Похожие:
Какнамерения, обработанные в текстовом блоке (Java 13)
недопустимая последовательность открытого разделителя текстового блока, терминатор отсутствующей строки