java Eclipse:提取方法功能失败
为了提高冗长方法的可读性,我想用一个方法替换一个重复使用的代码块(仅赋值)。因此,我选择了代码块并运行了Eclipse的提取方法功能,但由于以下错误而失败:
Ambiguous return value: Selected block containsmore than one assignment to local variables. Affacted variables are:
int foo double[] bar
我怎样才能解决这个问题?它应该是一个简单的void
方法,用于完成一些赋值,我不确定Eclipse(3.6.2)会抱怨什么
# 1 楼答案
Eclipse需要所有用作参数的变量,并返回一个或不返回在提取的块中修改过的变量
您的问题是一个类似于
因为这两个变量(foo,bar)在进一步的语句中都是必需的,所以它们不能作为一个值返回。 您可以返回一个包含foo和bar的类
将它们声明为成员变量是有效的
除此之外:
# 2 楼答案
这些只是赋值还是声明?因为它们看起来像是声明。当您试图将它们提取到方法中时,变量将仅在新方法中可见,因此Eclipse希望返回它们,使它们在调用块中可用
如果可能,可以将变量设置为全局变量(即成员变量),然后将赋值代码放入额外的方法中
编辑:
正如stacker指出的,Eclipse希望返回在新方法中修改的所有变量。由于Java使用按值调用,这对于基元类型是必要的。因为对它们的指定仅在提取的方法中可见,而在外部不可见