java - 我可以传递未定义的参数吗?
问题描述
我可以像下面的例子一样传递未定义的参数:
//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?
解决方案
尝试在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
,最好为每个原始/实例类型保留方法
推荐阅读
- python - 为什么不能添加 PPA 死蛇?
- javascript - 带有 Babel 的 Webpack 给出未捕获的引用错误:未定义要求
- reactjs - axios 拦截器请求未获取异步存储 access_token 并且为空?
- azure-devops - 在服务器上安装多个 Azure DevOps 环境代理
- wordpress - 带有 wordpress 的 IIS ARR 无法从 Internet 错误超时
- android - AndroidX 依赖项在 gradle.properties 文件中不起作用
- java - 我的 android 应用程序没有旋转。问题可能出在哪里?
- swagger - 如何在招摇中添加响应体
- c# - 方法 OnTriggerStay2D() 仅在玩家移动时有效
- maven - Maven 管道访问包注册表