抽取方法错误
尝试抽取方法时,可能会发生一个或多个下列常见错误:
-
所选择的块引用了在选择之外声明的本地类型
本地类型声明不是选择的一部分,但是为抽取而选择的语句之一引用了它。扩展选择,让它包括本地类型声明,或者减少选择,不选择对本地类型声明的引用。
-
在选择之外引用了在所选择的块中声明的本地类型
选择中包含本地类型声明,但还在所选的语句外部引用了该类型。扩展选择,让它包含对本地类型的所有引用,或减少选择,不选择本地类型声明。
-
有歧义的返回值:所选择的块中包含局部变量的多个赋值
在所选的块中发现本地变量的多个赋值。减少选择,只选择一个赋值,或者扩展选择,让该选择至少包含对本地变量的所有引用。
-
有歧义的返回值:表达式访问所选择的本地和返回语句
所选择的语句生成多个返回值。如果选择了表达式并且还修改了表达式的自变量,就会发生这种情况。要校正此问题,还要将选择扩展到包含对已修改的自变量的读访问权。
-
选择包含中断语句,但是未选择相应的中断目标
要校正该问题,扩展该选择,使它包含中断/继续目标,或者减少选择,以便选择不包含中断/继续语句。
-
选择中包含了继续语句,但是未选择相应的继续目标
要校正该问题,扩展该选择,使它包含中断/继续目标,或者减少选择,以便选择不包含中断/继续语句。
-
不能从选择中抽取新方法。只能抽取顶级方法的主体中的语句
这是一般错误消息,每当选择不产生一组有效语句时,就会显示此错误消息。显示此错误消息的典型情况是:
-
选择了整个方法,而不是方法主体的一部分。
-
选择中只包含语句的一部分。抽取方法 sense 中的语句是用分号隔开的。在下面的一些示例中,选择中未标记一组语句,因此不能抽取它们:
-
foo().bar().baz();
要校正该问题,选择整个消息发送链
-
int i= foo();
扩展选择,让它包含整个声明
用户可以使用“编辑”菜单中的扩展选择至操作将选择扩展至有效范围。
-
选择在注释内开始
不能抽取注释的部分。扩展选择,让它包含整个注释,或减少选择,根本不包括注释。
-
选择在注释内结束
不能抽取注释的部分。扩展选择,让它包含整个注释,或减少选择,根本不包括注释。
-
不能抽取在语句中间结束的选择
调整选择,使它完全包含一组语句。抽取方法 sense 中的语句是用分号隔开的。
Java 开发工具(JDT)
重构支持
抽取方法
使用结构化选择
源菜单
重构菜单