#java #java-15
Вопрос:
Попробовал это на openjdk версии «15» 2020-09-15
Следующая простая строка
String str = "s";
Согласно официальной документации списка экранирующих символов, s не определен.
Набор инструментов Spring не показывает ошибку компиляции для «s» и не показывает, когда я компилирую в командной строке с помощью maven. Любые другие символы, такие как p, приводят к следующей ошибке, которая соответствует официальной документации.
Недопустимая escape-последовательность (допустимыми являются b t n f r «‘ )
Почему компилятор java не жалуется на s? Печать результирующей строки на консоли указывает на то, что она выводит символ пробела (0x20), поэтому похоже, что она распознает его, но просто не задокументирована.
Комментарии:
1. Что произойдет, если вы распечатаете строку?
2. …потому что эта страница была написана для JDK8 и даже говорит об этом в верхней части страницы.
3. Новые escape-последовательности, добавленные в Java 15 docs.oracle.com/en/java/javase/15/text-blocks/index.html
4. @AnikethMalyala, это в вопросе
Ответ №1:
Это новая escape-последовательность в Java 15:
https://docs.oracle.com/en/java/javase/15/text-blocks/index.html
Учебник, на который вы ссылаетесь, предназначен для Java 8, но вы находитесь на JDK 15.
Комментарии:
1. Не должно ли сообщение об ошибке упомянуть об этом? В нем все еще говорится, что допустимые побеги из более старого списка
2. @user871199 В спецификации языка 3.10.7. Escape-последовательности в качестве допустимого escape-символа упоминается буква «s», поэтому сообщения об ошибке не будет.
3. @Scratte, но сообщение об ошибке очень явное — точно так же, как в посте. Незначительная проблема, но все равно проблема. Если сообщение об ошибке содержит список, то можно предположить, что это полный список.
4. @user871199 Я ожидаю, что объяснение в том, что разработчик забыл обновить сообщение об ошибке. Вы можете попытаться связаться с OpenJDK и посмотреть, сможете ли вы отправить сообщение об ошибке в сообщении.
Ответ №2:
s
является ли допустимой escape-последовательностью в Java SE 15, как указано в String#translateEscapes
документации:
Сообщение об ошибке, о котором вы упомянули, определенно является ошибкой.