static にする
static にするリファクタリングは、内部クラスまたはインスタンスメソッドを静的なものに変換します。
クラスの場合、このリファクタリングはコード内のクラスへのすべての参照も自動的に修正します。
メソッドの場合、このリファクタリングによって、メソッドのすべての呼び出し、実装、オーバーライドも自動的に修正されます。
リファクタリングするメソッドまたはクラスを選択します。
メインまたはコンテキストメニューで、 を選択します。
表示されるダイアログで、リファクタリングオプションを指定します。
class の場合、そのクラスが外部クラスのフィールドを参照する場合、IntelliJ IDEA は外部クラスをパラメーターとして内部クラスのコンストラクターに渡すことを提案します。
メソッドの場合、そのメソッドが含まれているクラスフィールドのいずれかを参照する場合は、参照オブジェクト全体をパラメーターとしてメソッドに渡すか(名前のパラメーターとしてオブジェクトを追加する )、または参照フィールド / 変数をパラメーターとしてメソッドに渡すことができます(フィールドのパラメーターを追加する)。
メソッドにフィールドまたはインスタンス変数への参照が含まれていない場合は、インスタンス修飾子をクラス参照と置き換えるかどうかを指定できます。
メソッドを静的にする例
前 | 後 |
|---|---|
class ConnectionPool {
public int i;
public int j;
public void getConnection() {
...
}
}
|
class ConnectionPool {
public int i;
public int j;
public static void getConnection(ConnectionPool connectionPool) {
...
}
}
|
class ConnectionPool {
public int i;
public int j;
public void getConnection() {
...
}
}
|
class ConnectionPool {
public int i;
public int j;
public static void getConnection(int i, int j) {
...
}
}
|
呼び出し階層では、メソッドの呼び出し元にインスタンスメンバーへの他の参照が含まれていない場合、IntelliJ IDEA はそれらの呼び出し元も静的にすることを提案します。 この例では、リファクタリングは baz(int i) に対して実行されます。 すべての呼び出し側メソッドも静的に選択されます。 適切なダイアログで、静的にする呼び出し側メソッドを選択できます。
前 | 後 |
|---|---|
class CallHierarchySample {
private void foo(int i) { bar(i);}
private void bar(int i) { baz(i);}
private void baz(int i) { }
}
|
class CallHierarchySample {
private static void foo(int i) { bar(i);}
private static void bar(int i) { baz(i);}
private static void baz(int i) { }
}
|
クラスを static にするダイアログ
このダイアログを使用して、 static にする リファクタリングのオプションを指定します。
項目 | 説明 |
|---|---|
インスタンス限定子をクラス参照で置換する | インスタンス修飾子をクラス参照に置き換えるかどうかを指定します。 |
メソッドを static にするダイアログ
このダイアログを使用して、 static にする リファクタリングのオプションを指定します。
項目 | 説明 |
|---|---|
名前のパラメーターとしてオブジェクトを追加する | このチェックボックスを選択して、参照されているオブジェクト全体をパラメーターとしてメソッドに渡す場合は、下のフィールドにパラメーターの名前を指定します。 |
フィールドのパラメーターを追加する | このチェックボックスを選択して、参照されたフィールド / 変数をパラメーターとしてメソッドに渡してから、リスト内の適切なフィールドを選択します。 |
上へ移動 / 下へ移動 | このボタンを使用して、リスト内のパラメーターの順序を変更します。 |
インスタンス限定子をクラス参照で置換する | インスタンス修飾子をクラス参照に置き換えるかどうかを指定します。 このチェックボックスは、メソッドにフィールドまたはインスタンス変数への参照が含まれていない場合に使用できます。 |