シグネチャーの変更
シグネチャーの変更リファクタリングは、メソッドシグネチャーまたはクラスシグネチャーに適用できるいくつかの変更を組み合わせたものです。
class の場合、このリファクタリングにより、クラスをジェネリクスに変換し、その型パラメーターを操作できます。クラスのすべての呼び出し、実装、オーバーライドを自動的に修正します。
メソッドの場合、このリファクタリングは、メソッド名の変更、パラメーターと例外の追加、削除、並べ替え、名前の変更、呼び出しの階層を通じた新しいパラメーターと例外の伝播を行うことができます。
シグネチャーを適切に変更
エディターで、クラスまたはメソッドのパラメーターの追加または編集を開始します。IntelliJ IDEA はエディターにシグネチャーの変更インレイヒントを表示します。
インレイヒントをクリックするか、Alt+Enter を押します。
パラメーターを編集している場合、IntelliJ IDEA は使用方法の更新を提案します。提案を適用するには、次へをクリックします。
新しいパラメーターを追加する場合、IntelliJ IDEA では、そのパラメーターのデフォルト値を追加し、使用方法を更新するように提案します。デフォルト値を適用するには、更新をクリックします。
シグネチャー変更を呼び出すダイアログ
シグネチャーを変更するメソッドまたはクラスを選択します。
コンテキストメニューから
(Ctrl+F6)を選択します。シグネチャーの変更内容に応じて開くダイアログで、適切なオプションを指定してリファクタリングをクリックします。潜在的な変更のプレビューを表示するには、プレビューをクリックします。
クラスシグネチャーの変更の例
型パラメーター Param1, Param2
をクラス MyClass
に追加しましょう。
文字列と整数は、それぞれ Param1
と Param2
のクラスシグネチャーの変更ダイアログで指定されたデフォルト値です。
また、パラメーターの境界値を追加して、型パラメーターに渡すものにいくつかの制限を加えることもできます。例: Param3
をデフォルト値 List
と境界値 Collection
で追加する

前 | 後 |
---|---|
public class MyClass {
public class MyOtherClass {
MyClass myClass;
void myMethod(MyClass myClass) {
}
}
}
|
public class MyClass<Param1, Param2, Param3 extends Collection> {
public class MyOtherClass {
MyClass<String, Integer> myClass;
void myMethod(MyClass<String, Integer, List> myClass) {
}
}
}
|
メソッドシグネチャーの変更例
メソッドにパラメーターを追加し、メソッドシグネチャーの変更ダイアログでさまざまなオプションを指定して異なる結果を得ることができます。
メソッドに例外を追加することもできます。例外は呼び出し階層に伝播されます。

パラメーターの追加
名前 price
、型 double
、デフォルト値 0.0
を持つパラメーターを追加しましょう。
IntelliJ IDEA は、メソッドにパラメーターを追加し、メソッド呼び出しを更新し、デフォルトのパラメーター値を指定します。
前 | 後 |
---|---|
public class MyClass {
public void myMethod(int value) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1);
}
}
}
|
public class MyClass {
public void myMethod(int i, double price) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1, 0.0);
}
}
}
|
任意の変数を使用
すべてのメソッド呼び出しを更新し、メソッド呼び出しの近くで適切な型の変数を探し、それをメソッドに渡しましょう。これを達成するには、任意の変数を使用オプションをチェックします。
結果として、IntelliJ IDEA は新しいパラメーターと同じ型を持つ変数 d を見つけ、それをメソッド呼び出しで使用します。
前 | 後 |
---|---|
public class MyClass {
public void myMethod(int value) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1);
}
}
}
|
public class MyClass {
public void myMethod(int i, double price) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1, d);
}
}
}
|
オーバーロードメソッド
メソッド呼び出しを変更しないで、新しいシグネチャーでメソッドを呼び出す新しいオーバーロードメソッドを作成するように IntelliJ IDEA に依頼しましょう。これを実現するには、オーバーロードメソッドによる委譲オプションを使用します。
新しいオーバーロードメソッドには古いシグネチャーがあることに注意してください。ただし、新しいシグネチャーを使用してメソッドを呼び出します。リファクタリングを実行するときに、0.0
がデフォルトのパラメーター値として指定されました。
前 | 後 |
---|---|
public class MyClass {
public void myMethod(int value) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1);
}
}
}
|
public class MyClass {
public void myMethod(int i) {
myMethod(i, 0.0);
}
public void myMethod(int i, double price) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1);
}
}
}
|
パラメーターの伝播
Alt+G を、呼び出し元のメソッド
myMethodCall()
を介してメソッド呼び出しに伝播してみましょう。
その結果、新しいパラメーター price
は、呼び出し元のメソッドを介してメソッド呼び出しに伝播し、それに応じてメソッド呼び出しを変更します。
前 | 後 |
---|---|
public class MyClass {
public void myMethod(int value) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1);
}
}
}
|
public class MyClass {
public void myMethod(int i, double price) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass, double price) {
double d = 0.5;
myClass.myMethod(1, price);
}
}
}
|
例外の伝播
クラス MyClass
に例外 IOException
をスローするメソッド read
を追加しましょう。
次に、MyClass
を拡張し、元の read
メソッドをオーバーライドする新しいクラス ExtendsMyClass
を作成しましょう。
今度は MyClass
に戻って、このリファクタリングによって TimeOutException
などの別の例外を追加すると、メソッド read
もサブクラスに更新されます。
前 | 後 |
---|---|
public class MyClass {
public void read() throws IOException {
}
public void myMethod(int value) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1);
}
}
}
//Let's create a new class "ExtendsMyClass".
public class ExtendsMyClass extends MyClass {
@Override
public void read() throws IOException {
super.read();
}
}
|
public class MyClass {
public void read() throws IOException, TimeOutException {
}
public void myMethod(int value) {
}
public class MyOtherClass {
public void myMethodCall(MyClass myClass) {
double d = 0.5;
myClass.myMethod(1);
}
}
}
//As you see, "TimeOutException" was added.
public class ExtendsMyClass extends MyClass {
@Override
public void read() throws IOException, TimeOutException {
super.read();
}
}
|
パラメーターの追加
赤色でハイライトされている
return
値をクリックします。Alt+Enter を押してパラメーター「<パラメーター名>」を作成しますを選択します。
シグネチャーの変更ダイアログで、パラメーター設定を調整するか、提案された設定を受け入れます。
リファクタリングをクリックします。
シグネチャーの変更ダイアログ
項目 | 説明 |
---|---|
名前 | 関数、メソッド、メソッド仕様の名前。 |
パラメーター | シグネチャー内のパラメーターのリスト。パラメーター項目では、パラメーターを使用して以下のアクションを実行することができます。
|
関連ページ:

シグネチャーの変更
シグネチャーの変更リファクタリングは、関数シグネチャーに適用できるいくつかの異なる変更を組み合わせます。このリファクタリングを使用して、次のことができます。関数名と戻り値の型を変更する、パラメーターの追加、削除、並べ替え、パラメーターにデフォルト値を割り当てます、パラメーター名と型を変更する、関数呼び出し階層を介して新しいパラメーターを伝播する、ファンクションシグネチャーを変更すると、PhpStorm は関数のすべての使用箇所を検索し、その変更を反映するように安全に変更できる関数のすべての呼び出...

TypeScript のリファクタリング
リファクタリングとは、アプリケーションの動作を変更せずにソースコードを更新することを意味します。リファクタリングは、コードを安定した dry に保ち、保守を容易にできます。移動リファクタリング:IntelliJ IDEA を使用すると、ファイルやフォルダーを移動できるだけでなく、TypeScript の最上位シンボルを移動できます。シンボルの移動リファクタリングは、ES6 モジュールのクラス、関数、変数に対して機能します。クラス、関数、変数を移動する移動するシンボルを選択します。を押すか、メインメ...

JavaScript のリファクタリング
リファクタリングとは、アプリケーションの動作を変更せずにソースコードを更新することを意味します。リファクタリングは、コードを安定した dry に保ち、保守を容易にできます。シンボルの移動リファクタリング:IntelliJ IDEA を使用すると、ファイルやフォルダーを移動できるだけでなく、JavaScript トップレベルシンボルを移動できます。シンボルの移動リファクタリングは、ES6 モジュールのクラス、関数、変数に対して機能します。クラス、関数、変数を移動する移動するシンボルを選択します。を押...

クラスシグネチャーの変更ダイアログ
クラスシグネチャーの変更リファクタリングを実行するには、クラスシグネチャーの変更ダイアログを使用します。使用可能なコントロールを使用して正式型パラメーターを管理します(次の表を参照)。パラメーターの追加と削除、順序の変更ができます。すぐにリファクタリングを実行するには、リファクタリングをクリックします。実際にリファクタリングを実行する前に、プレビューをクリックして潜在的な変更を確認してください。(これらは検索ツールウィンドウに表示されます。) このアイコンまたはショートカットを使用してパラメーター...

コードリファクタリング
リファクタリングは、新しい機能を作成せずにソースコードを改善するプロセスです。リファクタリングは、コードを安定させ、dry に保ち、保守を容易にできます。リファクタリングの呼び出し:リファクタリングするアイテムを選択します。エディターでプロジェクトツールウィンドウまたは式 / シンボルでファイル / フォルダーを選択できます。選択可能なリファクタリングのリストを開くには、を押します。または、特定のリファクタリング用のキーボードショートカットを使用することもできます。フィールドのカプセル化、st...