首页 > 解决方案 > 我可以传递未定义的参数吗?

问题描述

我可以像下面的例子一样传递未定义的参数:

//This method not working with me
public void setValue(String key, Object value) {
    if (key.equals("isNewUser"))
        editor.putBoolean(key, value);
    if (key.equals("isNotificationEnabled"))
        editor.putBoolean(key, value);
    if (key.equals("userScore"))
        editor.putInt(key, value);
    if (key.equals("userName"))
        editor.putString(key, value);
    editor.apply();
}

这些方法使用如下重载方法与我一起工作:

public void setValue(String key, boolean value) {
    if (key.equals("isNewUser"))
        editor.putBoolean(key, value);
    if (key.equals("isNotificationEnabled"))
        editor.putBoolean(key, value);
    editor.apply();
}

public void setValue(String key, int value) {
    if (key.equals("userScore"))
        editor.putInt(key, value);
    editor.apply();
}

public void setValue(String key, String value) {
    if (key.equals("userName"))
        editor.putString(key, value);
    editor.apply();
}

有没有办法让它使用一种方法而不是 3?

标签: javaandroid

解决方案


尝试在Object value下面投下你的喜欢

if (key.equals("userName"))
    editor.putString(key, (String) value); // when you are sure that value IS String

另外,您可以通过以下方式检查实例

if (value instanceof String)
    editor.putString(key, value);

顺便提一句。这看起来不是存储数据的正确方法(“统一”方法),迟早它会抛出ClassCastException,最好为每个原始/实例类型保留方法


推荐阅读