gpt4 book ai didi

java - 在构造函数中实现监听器的(java/android)类是否应该具有与监听器操作以某种方式相关的静态方法?

转载 作者:行者123 更新时间:2023-12-01 15:26:29 25 4
gpt4 key购买 nike

好的,所以我会尝试让这个问题变得更简单一些。

这个问题的核心更多的是关于何时使用静态方法,但是在了解什么是静态方法与实例方法的要点理论概念之后,我想要一个使用下面提到的现实世界问题的更实用/实现建议.

  1. 我有一个 android 类(MyPreferences),用于处理设置和获取共享首选项。
  2. 我在 MyPreferences 的构造函数中注册了一个自定义监听器,该监听器会在每次更改时显示偏好设置的更改。
  3. 构造函数也有一些共同的东西: 设置 = ctx.getSharedPreferences(MyConfig.NAME_SHARED_PREFERENCES, 0); 编辑器=设置.edit(); settings.registerOnSharedPreferenceChangeListener(监听器);

现在正如我之前提到的,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);
}

现在我正在使用静态方式在项目中的其他类中使用这些 getter 和 setter(即 MyPreferences.getPrefsIsAppEnabled()

嗯,这显然会引发错误,因为没有调用具有共享首选项对象初始化的构造函数。

我的问题:在访问 getter 和 setter 方法之前,将所有这 10 个方法设置为非静态并在整个项目中实例化 MyPreference 是否是一个更好的逻辑,或者我应该将构造函数中存在的代码移动到所有 setter/getter 中函数并在调用 MyPreferences 类的方法之前在需要的地方重复它。请说明您建议该解决方案的原因,帮助我更清楚地理解。

我知道这是一个非常n00b的问题。请原谅我。我对 Java 很陌生,所以只是构建我的概念。

最佳答案

您的方法显然是有状态的(因为它们需要访问编辑器字段),因此将它们实现为静态方法并不是一个好主意。相反,您应该使用类实例。 (静态方法通常是无状态的实用函数,即当输入相同时,它们的结果始终相同)。

您可以每次实例化一个新对象或实现 Singleton pattern 。 Singleton 类只能实例化一次。提供了一个静态方法(getInstance)来访问它。

关于java - 在构造函数中实现监听器的(java/android)类是否应该具有与监听器操作以某种方式相关的静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10073099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com