私は現在空のインターフェイスを持ち、別のインターフェイスを拡張しています。私は空のインターフェイスを削除し、ベースインターフェイスを使用して、IntelliJで正しいリファクタリングを見つけようとしています。'空のインターフェイスで仲介者のIntelliJリファクタリングを削除する
"仲介者を削除"しようとしましたが、 "リファクタリングを実行できません。キャレットはリファクタリングするフィールドの名前に配置する必要があります"。
私は現在空のインターフェイスを持ち、別のインターフェイスを拡張しています。私は空のインターフェイスを削除し、ベースインターフェイスを使用して、IntelliJで正しいリファクタリングを見つけようとしています。'空のインターフェイスで仲介者のIntelliJリファクタリングを削除する
"仲介者を削除"しようとしましたが、 "リファクタリングを実行できません。キャレットはリファクタリングするフィールドの名前に配置する必要があります"。
あなたが探しているのは、 "タイプの移行"リファクタリングだと思います。
IDEAでa blog post explaining the "Remove Middleman" refactoringを見ると、私はあなたが単にこのために使うことはできないと思います。それは、単に「委譲するメソッドへのすべての呼び出しを同等の直接呼び出しに置き換える」ためです。
(私は別のリファクタリング、「使用するインターフェイスの可能性を」と思った瞬間のために、助けになるかもしれませんが、私はどちらか私の簡単なテストケースで働いていることを得ることができませんでした。)
私はあなたが何をしたいと思いますそうすることは、望ましくないインターフェース上の "インライン"リファクタリングです。
キャレットがあるとき、あなたは何とインライン(CTRL + ALT + N)ThingA
を取り除くために
class Thing implements ThingA
と
interface ThingA extends ThingB
場合ThingA
に、あなたはで終わる:
class Thing implements ThingB
「可能な限り利用インタフェース」空のインターフェースの使用を除去するための最善の方法は、あなたが削除して、選択したいインターフェースの定義に行き、「可能なインタフェースを使用する」を介して行われ「Refactor」メニューから選択します。あなたは安全に削除できる未使用のインタフェースで終わるべきです。
まだ動作していません - 私はまだ "キャレットは配置する必要があります..."というエラーが表示されます。 – ripper234
リファクタをどこに適用していますか?このリファクタは、フィールド宣言のクラスに適用する必要があります。あなたが持っているならば: AはBを伸ばす .... プライベートA myField; このリファクタリングは、フィールド宣言行でのみAに適用できます。 –