2011-09-12 15 views
1

Javaの非公開のトップレベル(つまりパッケージプライベート)クラスでは、ファイル名を一致させる必要はありません(たとえば、クラスFooはBar.javaで定義することができます)。私はそのような機能は何も使われていないと思う(入れ子のクラスは何年も前に導入されたので)。Eclipseでの非公開クラスの扱い

時々問題が発生します:いくつかのリファクタリングの後、私はクラス名にマッチしないファイル名で終了しました。私は(コミットしている間に)混乱し、Eclipseも(いくつかのファイルは再コンパイルされませんでした。

Eclipseでこのようなクラスを禁止する方法はありますか?

+0

使用しているEclipseのバージョンは何ですか?クラス名がファイル名と異なる場合、Eclipseがパッケージ保護されたクラスをコンパイルしないと言っていますか? – Ali

+0

私は3.7.0を使用していますが、前述の再コンパイルの問題が起こったことがあります(再現できません)。それ以来、私は非公開のクラスを避けましたが、今度はできるだけ頻繁にそれらを再利用したいと思います。 – maaartinus

+0

コンパイルの問題も再現できませんでした。しかし、私は非公開クラスのファイル名を検証するためにeclipseを取得する方法を知らない。私は個人的にこれを行うための方法はわかりません。いくつかのエラー/警告設定は、 'window> preferences> Java> Compiler> Errors/Warnings'の中にありますが、あなたの問題を解決できるものは何もありません。 Eclipseが内部クラスかどうかを判断できない可能性が高いと思います。クラスを公開するが、非公開のすべてのメソッド(コンストラクタを含む)は役に立ちますか? – Ali

答えて

0

Checkstyleを使用することをお勧めします。これには、Eclipse用の非常に優れたプラグイン、eclipse-csもあります。与えられた検査構成のeclipse-cs構成では、Miscellaneousの下に、「外部タイプ名とファイル名が一致するかどうかを検査します」という説明とともに、「外部タイプ・ファイル名」のチェックが有効になります。クラスFooはFoo.javaという名前のファイルになければなりません。 "

本当にこのようなクラスを禁止するには、このチェックを "エラー"重大度に設定することもできます(デフォルトでは、少なくともEclipseではビルドできません)重症

追加のボーナスとして、Checkstyleを使用しても、Eclipse内でこのチェックを実行することはできません。 CheckstyleはApache Mavenなどのさまざまなビルドツールに簡単に統合されているため、あなたや他のユーザーがEclipseを使用していない場合でもこの問題をチェックできます。

+0

私はそれを試しました...しかし、私はプラグインには全く満足していませんでした。それは日食が何をするかをすべてチェックするので、私はそれぞれの警告を二度受け取ります。何百万もの小切手がありますが、それらはすべてデフォルトではオンになっており、グローバルにオフに切り替えることはできません。それは私の日食が地獄のように遅くなった.... – maaartinus

+0

最後に試したのはいつですか?チェックをグローバルに切り替えたり、プロジェクトごとにCheckstyleを有効/無効にしたり、プロジェクトごとに特定のチェック設定を行うことも可能です。あなたが望むならば、この1つの問題だけをチェックすることさえできます。 – ziesemer

+0

多分1週間前ですか?私はあなたの答えからそれについて学びました。確かに、私はすべての警告をオフにしてその警告のみを有効にする方法を探していましたが、チェックボックス以外のすべてのチェックボックスをクリックする以外の方法はありませんでした。私の食の減速は、私がそれを使って何もしたくないことになった。多分、それはロンボクと、あるいは何でも間違ってやり取りするでしょう。たぶん、私はもう一度試してみましょう。 – maaartinus