在 Eclipse 中提取方法似乎不起作用

use*_*255 5 java eclipse refactoring

我尝试在 eclipse 中做一个简单的重构(提取方法)。我选择以下代码块并执行 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();
Run Code Online (Sandbox Code Playgroud)

之后仅使用 size 变量。

我收到错误消息:

不明确的返回值:选定的块包含多个对局部变量的赋值。受影响的变量是:

NodeList htmlAnchorNodes

解析器解析器

整数大小

如何让 Eclipse 识别返回值?

Gar*_*het 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();
Run Code Online (Sandbox Code Playgroud)

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();
}
Run Code Online (Sandbox Code Playgroud)

在大括号范围之外产生影响的唯一分配是对 的更改size,这应该可以解决重构工具的歧义。