Java の複数行のコメントは文字列を考慮しますか?
質問
この疑問は、C のような複数行コメントを持つ他の言語にも同様に当てはまるでしょう。これが私が直面している問題です。Eclipse で Java コードを使用していて、コードのブロックをコメントアウトしたいと考えていました。ただし、文字シーケンス「*/」を含む文字列があり、Eclipse は、コメントが文字列内であっても、そこで終了する必要があると判断します。大量のエラーが発生し、ビルドに失敗します。
/*
... some Java code ...
... "... */ ..." ...
... more Java code ...
*/
Java の仕様は、私の複数行コメントの Eclipse の解釈と一致していますか?Java や Eclipse がこの種のことを説明すると思います。
解決
エクリプスが正解です。コメント内には解釈コンテキストはありません (エスケープなどはありません)。見る JLS §3.7.
他のヒント
Eclipse では、コメントアウトしたいソース コードの部分を強調表示し、Ctrl+/ を使用して、強調表示されたセクションの各行を 1 行コメントにすることができます。これにより、行の先頭に「//」が追加されます。
または、本当に選択範囲をブロックコメントしたい場合は、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: */ ";
「バッチ」複数行コメントを実行して、各行に「//」でコメントを付けると便利かもしれません。IdeaではCtrl+"/"で選択した行をコメントしたりコメント解除したりできますが、Eclipseにも同様の機能があるはずです。
私がよく使うのは、 //
インラインコメント用、および使用 /* */
これまでの方法で大きなブロックをコメントアウトする場合のみ。
多くの開発者は、インライン コメントに /* */ を使い慣れているので、依然として /* */ を使用しますが、誰もがこのような問題に遭遇します。C では #if 0 を使用できるため、これはそれほど重要ではありませんでした。物を遠ざけてください。