Учитывают ли многострочные комментарии Java строки?

Этот вопрос, вероятно, в равной степени применим и к другим языкам с многострочными комментариями в стиле Си. Вот проблема, с которой я столкнулся. Я работаю с кодом Java в Eclipse, и я хотел закомментировать блок кода. Однако существует строка, содержащая последовательность символов «* /», и Eclipse считает, что комментарий должен заканчиваться на этом, даже если он находится внутри строки. Это дает мне массу ошибок и не работает.

/*
   ... some Java code ...
   ... "... */ ..." ...
   ... more Java code ...
*/

Соответствует ли спецификация Java интерпретации моего многострочного комментария Eclipse? Я хотел бы думать, что Java и / или Eclipse будут учитывать такие вещи.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
1 421
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Затмение верное. Внутри комментария нет контекста интерпретации (без экранирования и т. д.). См. JLS §3.7.

Да, я комментирую код, чтобы провести быстрый тест. Я уже протестировал то, что мне нужно, закомментировав код другим способом; Мне просто было любопытно, что может показаться странным недостатком Java и / или Eclipse.

Простой тест показывает, что Eclipse верен:

public class Test {
  public static final void main(String[] args) throws Exception {
    String s = "This is the original string.";
    /* This is commented out.
    s = "This is the end of a comment: */ ";
    */
    System.out.println(s);
  }
}

Это не может быть скомпилировано с:

Test.java:5: unclosed string literal
    s = "This is the end of a comment: */ ";

Мне может быть полезно просто сделать «пакетный» многострочный комментарий, чтобы он комментировал каждую строку с помощью «//». Это Ctrl + "/" в Idea для комментирования и раскомментирования выделенных строк, Eclipse должен иметь аналогичную функцию.

В Eclipse вы можете выделить часть исходного кода, которую хотите закомментировать, и использовать Ctrl + / для однострочного комментирования каждой строки в выделенном разделе - вставьте «//» в начало строк.

Или, если вы действительно хотите заблокировать выделение, используйте комбинацию Ctrl + Shift + /. Он обнаружит комментарии блока в вашем выборе. Однако отменить это сложнее, чем однострочные комментарии.

Я часто использую только // для встроенных комментариев и использую /* */ только для комментирования больших блоков, как вы.

Многие разработчики по-прежнему будут использовать / * * / для встроенных комментариев, потому что это то, с чем они знакомы, но все они сталкиваются с проблемами, подобными этой, в C это не имело большого значения, потому что вы могли #if 0 вещи прочь.

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