スポンサーリンク
Eclipse(+Java)で初めて「Move Type to New File」の機能を使ったので、そのとき気が付いたちょっとしたことをメモ。
スポンサーリンク
Move Type to New Fileとは
「Move Type to New File」はリファクタリング機能のひとつで、ネストされたクラス(今回は内部クラス)を、新しい.javaファイルに展開し、通常のクラスに変換してくれる機能です(ローカルクラスとかにも使えるかは未確認)。
private field の default化
この変換をするとき、エンクロージングクラスが、ネストされたクラスのprivate fieldにアクセスしている場合、そのprivate fieldを、アクセス修飾子無し(default)のfieldに変換します。
いちよ、「problems」として、プレビュー前に表示されます。
The visibility of field ... will be changed to default.
したがって、同じパッケージからアクセスできるfieldを持ったクラスが生成されます。
というわけで、これが嫌な場合は、例えば「setter・getter」を配置しておくなりしたほうが良いと思います。そこまで自動でやるオプションは見当たりませんでした。
ちなみに、fieldをカプセル化するリファクタリング機能は「Encapsulate Field」です。
感想
この機能を初めて使ったので(滅多に使うものじゃない)、へー、こうするのかー、と思いました。
エンクロージングクラスが、内部クラスに対してどのようにアクセスしているか(どのfileldにアクセスしているのか・内部クラスである必要性)を確認するのにも、この機能は使えそうです。
ちなみに、変換後、普通に赤い波線が出ました。
スポンサーリンク
スポンサーリンク