34

次のシナリオで正しいリファクタリングオプションを見つけるのに問題があります。

私はこのようなコードを持っています(Outer.javaに):

public class Outer {

    // ... class stuff

    public static class Inner {
        // ... inner class stuff   
    }
}

.javaInnerを選択し、それを独自のソースファイルでトップレベルクラスに変換する方法を探しています。これはコピー/貼り付けなどで手動で行うのは非常に簡単ですが、内部クラスは多くの場所で参照されているので、参照されるすべての場所で変更を処理するリファクタリングオプションが必要です。

私はこのオプションを試しましたが、それは私がよく理解していないRefactor -> Extract Class...というフィールドで奇妙なことをします。data

Eclipseのバージョンは3.5.1ガリレオです。

静的内部クラスをトップレベルクラスにリファクタリングするにはどうすればよいですか?


編集:私がこれを行うためのオプションを見落としたとは信じられません。正解ありがとうございます。+1してください。私はまだ答えを受け入れる必要があるので、スクリプトの落とし穴など、もっと役立つ情報があれば、答えを残す目的があります。

4

6 に答える 6

51

これはとても簡単で、見逃したなんて信じられません。

内部タイプ内の任意の場所にカーソルを置き、右クリックして次を選択します。
Refactor -> Convert Member Type to Top Level...

(デフォルト設定にはショートカットはありません)

これにより、内部タイプが自動的に抽出され、外部タイプと同じパッケージおよびディレクトリ内の独自のファイルに配置されます。

アップデート

Eclipseの新しいバージョンでは、このリファクタリングは「タイプを新しいファイルに移動」に名前が変更されました。

于 2010-01-22T14:45:42.070 に答える
6

完全を期すために、Eclipse のバージョン 4.x では用語が変更され、現在ではその操作を次のように呼んでいます。Move Type to New File...

タイプを新しいファイルに移動

于 2015-06-29T12:10:28.923 に答える
3

抽出クラスはあなたが望むものではありません。

Eclipse3.4.2を使用してこれを実行しました

  1. 内側を選択
  2. 「リファクタリング->メンバータイプをトップレベルに変換...」を右クリックします。
于 2010-01-22T14:51:59.017 に答える
2

リファクタリング->メンバーをトップレベルタイプに変換を使用

于 2010-01-22T14:51:51.903 に答える
2

私は 3.4.1 を持っており、Inner を右クリックして > リファクタリングすると、「メンバー タイプをトップ レベルに隠す..」というオプションがあり、まさにあなたが望むことを行います。

于 2010-01-22T14:48:12.130 に答える