2009-11-05 16 views
5

私は現在空のインターフェイスを持ち、別のインターフェイスを拡張しています。私は空のインターフェイスを削除し、ベースインターフェイスを使用して、IntelliJで正しいリファクタリングを見つけようとしています。'空のインターフェイスで仲介者のIntelliJリファクタリングを削除する

"仲介者を削除"しようとしましたが、 "リファクタリングを実行できません。キャレットはリファクタリングするフィールドの名前に配置する必要があります"。

答えて

2

あなたが探しているのは、 "タイプの移行"リファクタリングだと思います。

+0

まだ動作していません - 私はまだ "キャレットは配置する必要があります..."というエラーが表示されます。 – ripper234

+0

リファクタをどこに適用していますか?このリファクタは、フィールド宣言のクラスに適用する必要があります。あなたが持っているならば: AはBを伸ばす .... プライベートA myField; このリファクタリングは、フィールド宣言行でのみAに適用できます。 –

2

IDEAでa blog post explaining the "Remove Middleman" refactoringを見ると、私はあなたが単にこのために使うことはできないと思います。それは、単に「委譲するメソッドへのすべての呼び出しを同等の直接呼び出しに置き換える」ためです。

(私は別のリファクタリング、「使用するインターフェイスの可能性を」と思った瞬間のために、助けになるかもしれませんが、私はどちらか私の簡単なテストケースで働いていることを得ることができませんでした。)

5

私はあなたが何をしたいと思いますそうすることは、望ましくないインターフェース上の "インライン"リファクタリングです。

キャレットがあるとき、あなたは何とインライン(CTRL + ALT + NThingA

を取り除くために

 
class Thing implements ThingA 

 
interface ThingA extends ThingB 

場合ThingAに、あなたはで終わる:

 
class Thing implements ThingB 
0

「可能な限り利用インタフェース」空のインターフェースの使用を除去するための最善の方法は、あなたが削除して、選択したいインターフェースの定義に行き、「可能なインタフェースを使用する」を介して行われ「Refactor」メニューから選択します。あなたは安全に削除できる未使用のインタフェースで終わるべきです。

関連する問題