【问题标题】:Accessing Android SharedPreferences using generic method使用泛型方法访问 Android SharedPreferences
【发布时间】:2016-10-30 09:25:17
【问题描述】:

我正在尝试为 Android 的 SharedPreferences 定义一个通用包装方法,以便以更方便的方式获取\设置预定义参数列表。

最初我定义了一个所有支持类型的枚举(在我的例子中是 String、Int 和 Bool),它们中的每一个都与其对应的类相关联:

public enum ParamType {

    String(String.class),
    Int(Intent.class),
    Bool(Boolean.class);

    private final Class paramClass;
    ParamType(Class paramClass) {
        this.paramClass = paramClass;
    }
}

然后我定义了我使用的已知参数的枚举,以及每个参数的关联类型:

public enum Param {

    FirstParam(ParamType.Bool),
    SecondParam(ParamType.String),
    ThirdParam(ParamType.Int);

    Param(ParamType paramType) {
        this.paramType = paramType;
    }

    private final ParamType paramType;

}

然后我想要一个泛型方法,通过给定的参数,它会知道返回适当的类型:

public static <T> T getParamValue(Param param) {

}

但是,我不确定如何实现此方法以及是否真的可行,因为上面的签名中没有传递通用 T 参数。

【问题讨论】:

    标签: java android generics enums sharedpreferences


    【解决方案1】:

    这是一个过度工程,不要那样做。您可以创建用于保存自定义对象并加载它的接口,并为 SharedPreferences 和数据库实现它。但是如果有三到五种类型,则不必为每个整数类型创建泛型。

    【讨论】:

    • 好吧,在我的应用程序中,我有很多参数保存在 SharedPreferences 上,我正在尝试找到一种更好的方法来为每个定义字符串常量的不太好的代码,然后定义为每个显式设置器和获取器,并且还可以更轻松地添加新参数
    • 在这种情况下,请尝试使用领域数据库来保存应用程序中的参数和其他功能。您可以创建类,并在没有任何键的情况下保存/加载它,最重要的是,可以将数据库文件保存在手机内存中的任何位置,并通过复制文件来管理您的设置。缺点是领域会增加应用的大小。
    • 我使用这种方法来保存传感器读数,也许对于简单的应用程序设置来说它是一种矫枉过正
    • 好的,谢谢你的建议,我会检查这个选项。
    猜你喜欢
    • 2016-06-23
    • 2011-08-19
    • 1970-01-01
    • 2012-05-31
    • 2011-04-17
    • 1970-01-01
    • 2012-02-27
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多