我如何仅在部分代码中重命名变量?
例如:
System.out.println("Rectangle 1: " + "\n" + "Width: " + r1.width + "\n" + "Height: " +
r1.height + "\n" + "Color: " + r1.color + "\n" + "Area and Perimeter: " +
r1.getArea(r1.width, r1.height) + ", " + r1.getPerimeter(r1.width, r1.height));
因此,如果我想使用r2作为refVar为第二个矩形键入相同的内容,有没有办法可以快速执行此操作?我尝试使用Alt + Shift + R复制和粘贴,但最终会更改所有r1 refvars。
答案 0 :(得分:0)
我建议您使用查找/替换对话框来解决此问题,以满足您的需求。选择一组语句,然后按 Ctrl + F 。将弹出“查找/替换”对话框,请注意在范围组中选择了选定行选项。
您可以使用全部替换或替换/查找。但请注意,如果找到它,它也会替换注释中的字符串。
参见下图。
答案 1 :(得分:-1)
看看don't repeat yourself (DRY)原则,旨在防止像你这样的情况。而不是重命名变量创建单独的方法,它将接受任何Rectangle并打印其详细信息。
public static void printRectangleDetails(Rectangle r){
System.out.println("Rectangle 1: " + "\n" + "Width: " + r.width + "\n" + "Height: " +
r.height + "\n" + "Color: " + r.color + "\n" + "Area and Perimeter: " +
r.getArea(r.width, r.height) + ", " + r.getPerimeter(r.width, r.height));
}
现在,您可以在需要时将其与r1
和r2
矩形一起使用
printRectangleDetails(r1);
...
printRectangleDetails(r2);
如果由于某些原因您无法创建单独的方法并使用DRY原则,您可以执行以下操作:
我们说
String foo = "foo";
System.out.println(foo+" hello wordls"+ foo);
String bar = "bar";
System.out.println(foo+" hello wordls"+ foo);
并且您希望将第二个打印语句中的foo
替换为bar
。在第二个打印声明中使用 Alt + Shift + R (或从菜单:Refactor
- > Rename..
)将重命名所有foo
引用。为了防止它重新声明你的foo
引用(编译器会给你错误,但不要担心,我们稍后会删除它,只有在重命名过程时才有用),就在你要更改的语句之前{{1转移到foo
喜欢
bar
现在在这个新副本String foo = "foo";
System.out.println(foo+" hello wordls"+ foo);
String bar = "bar";
String foo = "whatever";
// ^^^
System.out.println(foo+" hello wordls"+ foo);
上使用 Alt + Shift + R ,eclipse会查找foo
从这个新的引用,并忽略早期的foo
,所以你应该能够看到像
(如您所见,前两个foo
未被选中进行重命名)
所以你可以把它改成foo
喜欢
bar
之后刚刚删除了这个额外的String foo = "foo";
System.out.println(foo+" hello wordls"+ foo);
String bar = "bar";
String bar = "whatever";
System.out.println(bar+" hello wordls"+ bar);
,因为您不再需要它了。
但要小心。这样,您将在重复String bar = "whatever";
之后重命名所有foo
个变量,而不仅仅是foo
中要重命名的变量。为了确保您没有更改任何您不想要的内容,请在方法结束时放置要更改的代码(确定没有System.out.println(foo+" hello wordls"+ foo);
之后不应更改)。完成后,将更改的代码移动到您想要的位置。