包含クラスのPreferencesオブジェクトの取得

この項の例では、包含クラスに所属するシステムおよびユーザーPreferencesオブジェクトを取得する方法を示します。これらの例は、インスタンス・メソッド内でのみ動作します。

次の例では、ユーザーごとの設定値を取得しています。取得した各設定値には、適切なデフォルトが割り当てられます。これらのデフォルトは、設定値が設定されていない場合、またはバッキング・ストアにアクセスできない場合に返されます。

ここでは、インラインのStringリテラルではなく、static finalフィールドが、キー名(NUM_ROWSおよびNUM_COLS)として使用されています。このようにすると、キー名の入力ミスによる実行時バグが発生する可能性が減少します。

package com.greencorp.widget;
import  java.util.prefs.*;

public class Gadget {
    // Preference keys for this package
    private static final String NUM_ROWS = "num_rows";
    private static final String NUM_COLS = "num_cols";

    void getPrefs() {
        Preferences prefs = Preferences.userNodeForPackage(Gadget.class);

        int numRows = prefs.getInt(NUM_ROWS, 40);
        int numCols = prefs.getInt(NUM_COLS, 80);

        ...
    }

前述の例では、ユーザーごとの設定値を取得しています。システムごとに1つの値が必要な場合は、getPrefsの1行目を次のように置き換えます。

Preferences prefs = Preferences.systemNodeForPackage(Gadget.class);