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

StackOverflow https://stackoverflow.com/questions/32897

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

Eclipse верен.Внутри комментария нет контекста интерпретации (нет экранирования и т.д.).Видишь JLS §3.7.

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

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

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

Да, я комментирую код просто для того, чтобы провести быстрый тест.Я уже протестировал то, что мне было нужно, закомментировав код другим способом;Мне просто было любопытно, что кажется странной особенностью 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: */ ";

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top