メソッドの抽出エラー
メソッドを抽出しようとすると、以下の共通エラーが 1 つ以上発生することがあります。
-
選択されたブロックが、選択の外で宣言されたローカル型を参照しています
ローカル型宣言は選択部分の一部ではないにもかかわらず、抽出のために選択されたステートメントの 1 つがそれを参照しています。
ローカルの型宣言を含むようにその選択部分を拡張するか、そのローカルの型宣言への参照が選択されないように選択部分を縮小してください。
-
選択されたブロック内で宣言されたローカル型が、選択の外から参照されています
選択部分にはローカルの型宣言が含まれてはいますが、その型は選択されているステートメントの外部でも参照されています。
ローカルの型への参照をすべて含むようにその選択部分を拡張するか、そのローカルの型宣言が選択されないように選択部分を縮小してください。
-
戻り値があいまいです。選択されたブロックが、ローカル変数への割り当てを複数含んでいます
1 つのローカル変数への複数の代入が、選択されているブロック内で検出されました。
1 つの代入だけが選択されるように選択部分を縮小するか、そのローカル変数への 1 つの参照を除く少なくともすべての参照も含まれるように、選択部分を拡張してください。
-
戻り値があいまいです。ローカルへの式アクセスおよび return ステートメントが選択されました
選択されているステートメントは複数の値を生成します。
これは、式が選択され、式の引き数の変更も行われた場合などに発生します。
この問題を修正するには、変更される引き数の読み取りアクセスも含まれるように選択部分を拡張してください。
-
選択に break ステートメントが含まれていますが、対応する break ターゲットが選択されていません
この問題を修正するには、break / continue ターゲットを含むように選択部分を拡張するか、break / continue ステートメントが選択部分に含まれないように選択部分を縮小してください。
-
選択に continue ステートメントが含まれていますが、対応する continue ターゲットが選択されていません
この問題を修正するには、break / continue ターゲットを含むように選択部分を拡張するか、break / continue ステートメントが選択部分に含まれないように選択部分を縮小してください。
-
選択から新規メソッドを抽出できません。
トップレベル・メソッド本体からのステートメントのみ抽出できます
これは、選択部分が有効なステートメントのセットを作成しないときに表示される汎用エラー・メッセージです。
このエラー・メッセージが表示される典型的なシナリオを以下に示します。
-
メソッド本体の一部だけではなく、メソッド本体が選択されています
-
選択部分にはステートメントの一部だけが含まれています。
抽出メソッドの意味でいうステートメントは、セミコロンで区切られています。
以下に、選択部分がステートメント・セットをマークしていないために、抽出できない例を示します。
-
foo().bar().baz();
この問題を修正するには、メッセージの送信チェーン全体を選択してください。
-
int i= foo();
宣言全体が含まれるように選択部分を拡張してください。
「編集」メニューの「選択の拡張先」を使用して選択部分を有効な範囲まで拡張できます。
-
選択がコメント内で始まっています
コメントの一部分を抽出することはできません。
コメント全体を含めるように選択部分を拡張するか、コメントを全く含めないように選択部分を縮小してください。
-
選択がコメント内で終っています
コメントの一部分を抽出することはできません。
コメント全体を含めるように選択部分を拡張するか、コメントを全く含めないように選択部分を縮小してください。
-
ステートメントの途中で終っている選択は抽出できません
選択部分がステートメント・セットを完全に含むように選択部分を拡張してください。
抽出メソッドの意味でいうステートメントは、セミコロンで区切られています。
Java 開発ツール (JDT)
リファクタリング・サポート
メソッドの抽出
構造化選択の使用
「ソース」メニュー
「リファクター」メニュー