5

Eclipse で簡単なリファクタリング (extract メソッド) を実行しようとしています。次のコード ブロックを選択し、alt+shift+M (抽出のショートカット) を実行します。

    Parser parser = Parser.createParser(comment.getText(), "UTF-8");
    NodeList htmlAnchorNodes = null;
    try {
        htmlAnchorNodes = parser
                .extractAllNodesThatMatch(new TagNameFilter("a"));
    } catch (ParserException e) {
        e.printStackTrace();
    }

    int size = htmlAnchorNodes.size();

その後、サイズ変数のみが使用されます。

エラーメッセージが表示されます:

あいまいな戻り値: 選択したブロックには、ローカル変数への割り当てが複数含まれています。影響を受ける変数は次のとおりです。

NodeList htmlAnchorNodes

パーサー パーサー

整数サイズ

戻り値をEclipseに認識させるにはどうすればよいですか?

4

1 に答える 1

4

場合によっては、どの変数を返すつもりなのか Eclipse が判断できないことがあります。いずれかを選択するか、後で実際に使用される値に基づいて分析を行うように求められるのが理想的ですが、メソッドを抽出する前に中括弧を使用して一時的な値の範囲を制限することで回避しました.

あなたのコードでは、私はから変更します

Parser parser = Parser.createParser(comment.getText(), "UTF-8");
NodeList htmlAnchorNodes = null;
try {
    htmlAnchorNodes = parser
            .extractAllNodesThatMatch(new TagNameFilter("a"));
} catch (ParserException e) {
    e.printStackTrace();
}

int size = htmlAnchorNodes.size();

int size;

{
    Parser parser = Parser.createParser(comment.getText(), "UTF-8");
    NodeList htmlAnchorNodes = null;
    try {
        htmlAnchorNodes = parser
                .extractAllNodesThatMatch(new TagNameFilter("a"));
    } catch (ParserException e) {
        e.printStackTrace();
    }
    size = htmlAnchorNodes.size();
}

中括弧の範囲外に影響する唯一の割り当ては、への変更sizeです。これにより、リファクタリング ツールのあいまいさが解決されるはずです。

于 2012-12-07T18:56:51.050 に答える