IntelliJ IDEA 2024.1 ヘルプ

フィールドのカプセル化

フィールドのカプセル化リファクタリングでは、データを非表示にして必要なアクセサーを作成できます。

データを隠し、アクセサーメソッドに基づく外向きインターフェースを通してアクセスすることは良い考えです。後で、クラスに依存するコードと利用可能なメソッドとの完全な互換性を維持しながら、データ内部を変更することができます。

  1. エディターで、キャレットをクラス、目的のフィールド、リファクタリングするクラス内の任意の場所に配置します。(選択にはプロジェクトツールウィンドウまたは構造ビューを使用することもできます。)

  2. メインメニューまたはコンテキストメニューから、リファクタリング | フィールドのカプセル化を選択します。

  3. 表示されるダイアログで、アクセサーを作成するフィールドをチェックし、getter または setter のどちらを作成するかを指定します。さらに、すべてのフィールドの出現箇所を適切なアクセサーメソッドの呼び出しに置き換える場合は、フィールドがアクセス可能な場合でもアクセサーを使用を選択します。表示オプションを選択することもできます。

  4. プレビューと変更の適用

サンプル

//File Class.java public class Class { public String aString; }
//File Class.java public class Class { private String aString; public void setaString(String aString) { this.aString = aString; } public String getaString() { return aString; } }
//File AnotherClass.java public class AnotherClass { public Class aClass; public void method() { aClass.aString="string"; } }
//File AnotherClass.java public class AnotherClass { public Class aClass; public void method() { aClass.setaString("string"); } }

フィールドのカプセル化ダイアログ

このダイアログを使用して、フィールドのカプセル化リファクタリングのオプションを指定します。

項目

説明

カプセル化するフィールド

この領域で、アクセサーを作成するフィールドを選択します。デフォルトの名前をそのまま使用することも、名前を変更することもできます。

リファクタリングしているクラスに同じシグネチャーを持つメソッドがすでに存在する場合、メソッドアイコン (the Method icon) が表示され、新しいアクセサーメソッドは作成されません。

既存のメソッドがアクセサーとして機能するかどうかを確認する必要があります。そうでない場合は、フィールドのカプセル化リファクタリングを再度使用する前に、アクセサーの名前を変更するか、既存のメソッドを変更する必要がある場合があります。新しいアクセサーが親クラスのメソッドをオーバーライド (the Overriding method icon) するか、実装 (the Implemented method icon) する場合、それに応じてマークが付けられます。この場合も、別の名前を選択するか、既存のメソッドを変更する必要がある場合があります。

アクセス権の取得 / アクセスの設定

このオプショングループを使用して、選択したフィールドにどのアクセサーメソッド(Getter、Setter、両方)を作成するかを選択します。チェックボックスの 1 つを選択解除すると、フィールドをカプセル化するテーブルの対応する列(Getter または Setter)全体が無効になります。

カプセル化したフィールドの可視性

ここでは、選択したフィールドの新しい表示範囲を指定できます

オプション

フィールドがアクセス可能である場合でもアクセサーを使用するかどうかを選択します。フィールドがアクセス可能な場合でもアクセサーを使用するオプションが有効になっていない場合、フィールドに直接アクセスできる場合、目的のフィールドへの参照は変更されません。それ以外の場合、必要なフィールドへのすべての参照はアクセサー呼び出しに置き換えられます。また、オプショングループカプセル化したフィールドの可視性での選択にも依存します。例: オプションフィールドがアクセス可能な場合でもアクセサーを使用するのチェックを外し、フィールドのプライベート可視性を選択した場合、クラス外のフィールドの使用箇所は変更されますが、クラス内では同じままです。

アクセサーの可視性

この領域では、作成されたアクセサーメソッドの表示範囲を選択します。

関連ページ:

コードリファクタリング

リファクタリングは、新しい機能を作成せずにソースコードを改善するプロセスです。リファクタリングは、コードを安定させ、dry に保ち、保守を容易にできます。リファクタリングの呼び出し:リファクタリングするアイテムを選択します。エディターでプロジェクトツールウィンドウまたは式 / シンボルでファイル / フォルダーを選択できます。選択可能なリファクタリングのリストを開くには、を押します。または、特定のリファクタリング用のキーボードショートカットを使用することもできます。フィールドのカプセル化、st...

インスタンスメソッドに変換

インスタンスメソッドに変換リファクタリングでは、静的メソッドを静的ではないクラスインスタンスメソッドに変換できます。クラスは初期メソッドの型パラメーターです。エディターで、リファクタリングしたいメソッドの宣言または使用箇所にキャレットを置きます。メソッドはでなければならず、そのパラメーターの型はプロジェクトからのクラスであるべきです。のようなパラメーター型は使用できません。に移動します。コンテキストメニューを使用して、このリファクタリングにアクセスすることもできます。開いたダイアログで、変換後に...

定数の抽出

定数の抽出リファクタリングにより、ソースコードを読みやすく保守しやすくなります。また、ハードコードされた定数を値や目的について何の説明もしないで使用するのを避けるのに役立ちます。エディターで、定数で置き換えたい変数の式または宣言を選択します。を押して定数を入力するか、を選択します。または、表示されるツールバーで抽出をクリックし、定数を選択します。表示されたリストから名前を選択するか、自分の名前を入力してを押します。または、を 2 回押して定数の抽出ダイアログを開き、そこでやにしたり、定数を別...