メソッド パラメーターの 2 つの複雑なインターフェイスから選択する必要があります:InterfaceParent
とInterfaceChild
.
インターフェイスInterfaceChild
はインターフェイスを拡張し、InterfaceParent
そのうちの 1 つが の署名の一部になりmethodX
ます。どちらのインターフェイスがより適しているかによって異なります。
定義上、多くのメソッドInterfaceParent
を共有しているため、ソース ファイルだけを見ただけではそれらを比較することは困難です。InterfaceChild
これは私が抱えている問題です。
Eclipse を使用して 2 つのインターフェースの違いをすばやく比較して表示するにはどうすればよいですか?
説明的なシナリオについてさらに読むか、上記の説明で十分である場合は、ここで読むのをやめてください。
インターフェイスをと考え、インターフェイスjava.util.Collection<E>
をInterfaceParent
と考えてください。私がそれらの中から選択しなければならなかったと想像してください。java.util.List<E>
InterfaceChild
このケースは私のケースと似ています。List<E>
拡張Collection<E>
されているため、インターフェースが多くのメソッドを共有しているからです。
これら 2 つのインターフェイスのソース ファイルを見てみましょう。両方のファイルにはすべてのメソッドの「スタブ」が含まれているため、2 つのコード エディターを並べて配置すると、一目でそれらを比較することは非常に困難です。
Collection<E>
とList<E>
は比較すると小さなインターフェイスであるため、私の問題はこれよりもさらに大きくなりますが、簡単にするために例にCollection<E>
とどまります。List<E>
IDE (Eclipse) を使用してこれらのインターフェースの違いを示したり、コマンド ライン ツールを使用して両方のメソッド シグネチャを出力したりできればと思います。
コマンド ライン ツールを使用して、出力をテキスト ファイルにダンプし、ファイルを並べ替え、差分ツールを実行して違いを確認し、共通のメソッドを非表示にすることができました。
List<E>
この例では、 で定義されているメソッドと で定義されていないメソッドをすばやく見つけ、この違いに基づいてCollection<E>
いずれかのインターフェイスを選択できます。methodX
Java オブジェクトに対してこの種の「リフレクション」を実行して、完全修飾クラス名を渡し、パブリック インターフェイス定義の出力ストリームを取得できるツールを私は知りません。ありましたら教えてください。
コマンドラインツールを使用してこれを行うのは明らかに面倒なので、Eclipseに似たようなものはありますか? アウトライン機能は、タイプの概要を一目で確認するのに最適ですが、2 つのアウトラインを比較できますか? 「コードの折りたたみ」機能は、ソース ファイルを「メソッドの名前」だけに縮小するのに最適ですが、2 つのインターフェイス間で共通のメソッドを隠して違いを示すものは何もありませんか?
Eclipse を離れることなく、この種のことを行うにはどうすればよいでしょうか?