この宣言は、主にメソッド開始部の Pascal 形式宣言に役立ちます。 また、スコープが広すぎる変数もリファクタリング後に残っていることがよくあります。
例:
StringBuilder sb = new StringBuilder();
System.out.println();
sb.append(1);
クイックフィックス適用後:
System.out.println();
StringBuilder sb = new StringBuilder();
sb.append(1);
インスペクションの構成:
sb 変数の移動は提案されません。
しかし、次のコードに対しては移動が提案されます。
StringBuilder sb = new StringBuilder(a);
if (flag) {
sb.append(1);
}
foo 変数の移動が提案されます。
class Foo {
static List<Foo> fooList = new ArrayList<>();
String bar;
Foo(String bar) {
this.bar = bar;
fooList.add(this);
}
public static void main(String[] args) {
// 安全ではないですが移動可能です
Foo foo = new Foo("bar");
System.out.println(fooList.size());
System.out.println(foo.bar);
}
}