你的代码看起来很好.只需确保使用完全相同的密钥(“b_StorageAvailable”).因为Map中的布尔值是自动装箱到原始布尔值,如果Map中没有提供键的条目,你将得到NullPointerException.
我还要检查你的函数的返回类型和局部变量是否被定义为HashMap< String,Boolean>同样.如果它是无类型的,那么你将无法假设它是Map中的布尔值.
public static void main(String[] args) {
Map states = new HashMap();
states.put("b_StorageAvailable", true);
states.put("b_StorageWritable", true);
if(states.get("b_StorageAvailable")){ // works fine!
System.out.println("storage is available!");
}
Map states2 = new HashMap(); // untyped!
states.put("b_StorageAvailable", true);
states.put("b_StorageWritable", true);
if(states2.get("b_StorageAvailable")){ // Type mismatch: cannot convert from Object to boolean
System.out.println("storage is available!");
}
}
所以你需要做的就是改变
Map states = this.getExternalStorageStatus();
至
Map states = this.getExternalStorageStatus();
并且可以改变getExternalStorageStatus()的返回类型
private Map getExternalStorageStatus(){
...
}