メソッドの抽出エラー

メソッドを抽出しようとすると、以下の共通エラーが 1 つまたは複数発生することがあります。

選択されているブロックが、選択部分の外部で宣言されているローカルの型を参照しています

ローカルの型宣言は選択部分の一部ではないにもかかわらず、 抽出のために選択されたステートメントの 1 つがそれを参照しています。 ローカルの型宣言を含むようにその選択部分を拡張するか、 そのローカルの型宣言への参照が選択されないように選択部分を縮小してください。

選択されているブロックで宣言されているローカルの型が、選択部分の外部で参照されています

選択部分にはローカルの型宣言が含まれてはいますが、 その型は選択されているステートメントの外部でも参照されています。 ローカルの型への参照をすべて含むようにその選択部分を拡張するか、 そのローカルの型宣言が選択されないように選択部分を縮小してください。

戻り値があいまいです: 選択されているブロックには、ローカル変数への複数の代入が含まれています

1 つのローカル変数への複数の代入が、選択されているブロック内で検出されました。 1 つの代入だけが選択されるように選択部分を縮小するか、 そのローカル変数への 1 つの参照を除く少なくともすべての参照も含まれるように、選択部分を拡張してください。

戻り値があいまいです: 選択されているローカル宣言への参照が複数あることが検出されました

選択部分で宣言されている複数の変数が、選択部分の外部でも参照されています。 1 つの変数宣言だけが選択されるように選択部分を縮小するか、 選択されている変数宣言への 1 つの参照を除く少なくともすべての参照も含まれるように、選択部分を拡張してください。

戻り値があいまいです: ローカル変数への代入と、選択されているローカル宣言への参照が検出されました

選択されているブロックに、ローカル変数への代入が含まれています。 さらに、選択部分内で宣言されている変数が、選択部分外でも参照されています。 代入またはローカル宣言のいずれかが選択されるように選択部分を縮小してください。 または、ローカル変数へのすべての参照あるいはすべての変数のいずれかが、 選択部分にも含まれるように、選択部分を拡張してください。

戻り値があいまいです: 選択部分に return ステートメントが含まれており、抽出されたメソッドから値を戻す必要があります

選択されているブロックには、return ステートメントが含まれています。 さらに、ローカル変数への代入またはローカル宣言のどちらかも選択されているので、 抽出されたメソッドから値を戻す必要があります。 選択部分から return ステートメントを除外するか、 ローカル変数へのすべての代入とすべてのローカルの型宣言を選択部分から除外してください。

戻り値があいまいです: 式に戻り型があり、抽出されたメソッドから値を戻す必要があります

選択されているステートメントは、boolean 型を戻さなければならない式です (たとえば、if-then-else ステートメントの条件部分)。 さらに、ローカル変数への代入も選択されているので、抽出されたメソッドから値を戻す必要があります。 この問題を修正するには、条件部分だけではなくステートメント全体を選択してください。

選択部分に break ステートメントが含まれていますが、対応する break ターゲットが選択されていません

この問題を修正するには、break / continue ターゲットを含むように選択部分を拡張するか、 break / continue ステートメントが選択部分に含まれないように選択部分を縮小してください。

選択部分に continue ステートメントが含まれていますが、対応する continue ターゲットが選択されていません

この問題を修正するには、break / continue ターゲットを含むように選択部分を拡張するか、 break / continue ステートメントが選択部分に含まれないように選択部分を縮小してください。

選択部分から新規のメソッドを抽出することができません。 トップレベルのメソッドの本体のステートメントしか抽出することができません

これは、実際には問題が何なのかがわからない問題を検出した場合に常に表示される汎用のエラー・メッセージです。 このエラー・メッセージが表示される典型的なシナリオを以下に示します。

選択部分がコメント内から開始しています

コメントの一部分を抽出することはできません。 コメント全体を含めるように選択部分を拡張するか、コメントを全く含めないように選択部分を縮小してください。

選択部分がコメント内で終了しています

コメントの一部分を抽出することはできません。 コメント全体を含めるように選択部分を拡張するか、コメントを全く含めないように選択部分を縮小してください。

ステートメントの途中で終了する選択は、抽出することができません

選択部分がステートメント・セットを完全に含むように選択部分を拡張してください。 抽出メソッドの意味でいうステートメントは、セミコロンで区切られています。

その他の問題

以下の問題は、きわめて自明な問題です。