メソッドの抽出
メソッドの抽出 リファクタリングを使用すると、グループ化できるコードフラグメントを取得し、別のメソッドに移動して、古いコードをメソッドの呼び出しに置き換えることができます。
メソッドを抽出する際には、変数を確認する必要があります。 出力変数が 1 つしかない場合、抽出されたメソッドの戻り値として使用されます。 出力変数が複数ある場合、 メソッドの抽出リファクタリングが適用されず、エラーメッセージが表示されることがあります。
この場合、 メソッドの抽出を動作させるためのいくつかの回避策があります。 例: すべての出力値を含む特別な data-class を導入することができます。
メソッドの抽出
メソッドに抽出するコードフラグメントを選択します。
Ctrl+Alt+M を押すか、メインメニューで に移動します。
または、コードフラグメントを選択したときに表示される フローティングツールバーで、 抽出 をクリックし、 メソッド を選択します。
IntelliJ IDEA は、部分的にのみ重複しているコードを検出すると、リファクタリングを続行するためにパラメーターを抽出することを提案します。

サンプル
a+b の式をメソッド(Kotlin の関数)に抽出し、重複を置き換えましょう。
前 | 後 |
|---|---|
public void method() {
int a=1;
int b=2;
int c=a+b;
int d=a+c;
}
|
public void method() {
int a=1;
int b=2;
int c=add(a,b);
int d=add(a,c);
}
...
private int add(int a, int b) {
return a+b;
}
|
前 | 後 |
|---|---|
fun method(){
val a = 1
val b = 2
val c = a + b
val d = a + b
}
|
fun method(){
val a = 1
val b = 2
val c = add(a, b)
val d = add(a, b)
}
private fun add(a: Int, b: Int) = a + b
|
Java レコードを使用してメソッドを抽出する
Java 16 バージョンから、Java レコードを使用してメソッドを抽出できます。 複数の変数がある場合に役立つ場合があります。 このような場合、IDE はまずこれらの変数を新しいレコードまたは bean クラスにラップしてからメソッド抽出を実行することを提案します。

class SomeClass {
public static void main(String[] args) {
int values[] = {1, 2, 3, 4, 5};
int sum = 0;
int num = 0;
for (int n : values) {
sum += n;
num++;
}
System.out.println("Sum: " + sum + " - Num: " + num);
}
}
class SomeClass {
public static void main(String[] args) {
Statistics result = getStatistics();
System.out.println("Sum: " + result.sum() + " - Num: " + result.num());
}
private static Statistics getStatistics() {
int values[] = {1, 2, 3, 4, 5};
int sum = 0;
int num = 0;
for (int n : values) {
sum += n;
num++;
}
Statistics result = new Statistics(sum, num);
return result;
}
private record Statistics(int sum, int num) {
}
}
2026 年 3 月 30 日