Java 未选中的强制转换贴图<;字符串,字符串>;所有偏好
我有一个关于未经检查的演员的渐变警告。该应用程序没有错误,但我想清理任何代码问题。我在这里看到了类似的帖子 我不清楚如何检查该类型的值Java 未选中的强制转换贴图<;字符串,字符串>;所有偏好,java,android,casting,gradle,Java,Android,Casting,Gradle,我有一个关于未经检查的演员的渐变警告。该应用程序没有错误,但我想清理任何代码问题。我在这里看到了类似的帖子 我不清楚如何检查该类型的值 .../mayday/md/model/SMSSettings.java:56: warning: [unchecked] unchecked cast Map<String, String> allPreferences = (Map<String, String>) sharedPreferences.getAll()
.../mayday/md/model/SMSSettings.java:56: warning: [unchecked] unchecked cast
Map<String, String> allPreferences = (Map<String, String>) sharedPreferences.getAll();
^
required: Map<String,String>
found: Map<String,CAP#1>
where CAP#1 is a fresh type-variable:
CAP#1 extends Object from capture of ?
../mayday/md/model/SMSSettings.java:56:警告:[未选中]未选中强制转换
Map allPreferences=(Map)SharedReferences.getAll();
^
必需:地图
发现:地图
其中CAP#1是一个新类型变量:
CAP#1将对象从捕获扩展到?
第56行Map allPreferences=(Map)sharedPreferences.getAll()代码>
公共静态SMSSettings检索(上下文){
SharedReferences SharedReferences=PreferenceManager.GetDefaultSharedReferences(上下文);
Map allPreferences=(Map)SharedReferences.getAll();
列出RetrievePhoneNumber=RetrievePhoneNumber(所有首选项);
返回新的短信设置(检索到的电话号码、所有首选项.get(SMS_MESSAGE));
}
返回一个映射
而不是映射
,其中无界通配符?
是的一个简短版本。注意,共享引用
如果您100%确定您的SharedReferences
对象中只有字符串,则可以忽略此警告,并将@SuppressWarnings(“未选中”)
添加到您的方法中或在您的强制转换行上方。这是一个很好的注释。不过,它并没有回答OPs的问题。@blackbelt,谢谢你提供的信息,我不知道如何使用这些信息来解决这个问题。
public static SMSSettings retrieve(Context context) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
Map<String, String> allPreferences = (Map<String, String>) sharedPreferences.getAll();
List<String> retrievedPhoneNumbers = retrievePhoneNumbers(allPreferences);
return new SMSSettings(retrievedPhoneNumbers, allPreferences.get(SMS_MESSAGE));
}
Map<String, ?> allPreferences = sharedPreferences.getAll();