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




Затмение верное. Внутри комментария нет контекста интерпретации (без экранирования и т. д.). См. 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 вещи прочь.