Учитывают ли многострочные комментарии Java для строк?
Вопрос
Этот вопрос, вероятно, в равной степени применим и к другим языкам с многострочными комментариями, подобными 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 убрать материал.