では、その質問をもう少し簡単にしようと思います。
この質問の核心は、静的メソッドをいつ使用するかについてですが、静的メソッドとインスタンスメソッドの箇条書きの理論的概念を確認した後、以下に説明するように、現実世界の問題を使用したより実用的な実装の提案をしたいと思います。
- 共有設定の設定と取得を処理するAndroidクラス(MyPreferences)があります。
- MyPreferencesのコンストラクターに登録されたカスタムリスナーがあり、変更されるたびに変更されたプリファレンスを表示します。
- コンストラクターにも一般的なものがあります。settings=ctx.getSharedPreferences(MyConfig.NAME_SHARED_PREFERENCES、0); editor = settings.edit(); settings.registerOnSharedPreferenceChangeListener(listener);
さて、先に述べたように、MyPreferenceには共有設定キーを取得/更新する10個の関数があります...
public static void setPrefsIsAppEnabled(Boolean boolValue) {
editor.putBoolean(MyConfig.PREFS_IS_APP_ENABLED, boolValue);
editor.commit();
}
public static boolean getPrefsIsAppEnabled()
{
return settings.getBoolean(MyConfig.PREFS_IS_APP_ENABLED, false);
}
現在、静的な方法(つまり、MyPreferences.getPrefsIsAppEnabled())を使用して、プロジェクト内の他のクラスのこれらのゲッターとセッターを使用しています。
共有設定オブジェクトの初期化を持つコンストラクターが呼び出されないため、これは明らかにエラーをスローします。
私の質問:getterメソッドとsetterメソッドにアクセスする前に、これらの10個のメソッドすべてを非静的にし、プロジェクト全体でMyPreferenceをインスタンス化する方が良いロジックですか、それともコンストラクターに存在するコードをすべてのsetter/getter関数に移動して繰り返す必要がありますMyPreferencesクラスのメソッドを呼び出す前に、必要な場所でそれを実行します。あなたがその解決策を提案している理由を述べることによって、私がより明確に理解するのを手伝ってください。
私はそれが非常にn00bの質問であることを知っています。許してください。私はJavaに非常に慣れていないので、概念を構築するだけです。