如何灵活使用通用对象?

时间:2015-03-21 18:50:06

标签: java android

我想用我的Android应用中的SharedPreferences替换一个名为SecurePreferences的类(this的修改版本)。如何灵活调用其中一个实例的方法?

示例:

SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
SecurePreferences securePref = new SecurePreferences(sharedPref, "", key, true);
...
public void loadSettings() {
    Object pref;
    if (Settings.usingEncryptedPreferences) {
        pref = securePref;
    } else {
        pref = sharedPref;
    }
    boolean musicEnabled = pref.getBoolean("musicEnabled", true);
    boolean soundEnabled = pref.getBoolean("soundEnabled", true);
    boolean vibrationEnabled = pref.getBoolean("vibrationEnabled", true);
    // and so on
}

SharedPreferencesSecurePreferences都有getBoolean方法。但Android Studio告诉我Cannot resolve method 'getBoolean(Java.lang.String, boolean)'

1 个答案:

答案 0 :(得分:1)

错误是由pref变量的类型引起的。 Object类没有getBoolean方法。可以有许多解决方案。例如:如果SecurePreferences扩展了SharedPreferences接口(或实现它),那么pref变量的类型应该是SharedPreferences。