java – 如何测试Map中的布尔值?

我是 java的新手,所以请放轻松我.我有一个hashmap,其中包含String键和布尔值,如下所示.
Map<String,Boolean> states = new HashMap<String,Boolean>();
states.put("b_StorageAvailable",true);
states.put("b_StorageWritable",true);

我从一个函数返回.一旦我在其他地方得到这个,我希望能够在其中一个调用if语句来查看它的真或假.

if(states.get("b_StorageAvailable")) { 
    //Do this 
}

但java一直告诉我,我需要这是一个布尔类型,它是一个Map类型.我怎么能这么容易做到?

UPDATE

应该注意的是,我调用函数获取返回值的代码如下所示,

Map states = this.getExternalStorageStatus();

解决方法

你的代码看起来很好.只需确保使用完全相同的密钥(“b_StorageAvailable”).因为Map中的布尔值是自动装箱到原始布尔值,如果Map中没有提供键的条目,你将得到NullPointerException.

我还要检查你的函数的返回类型和局部变量是否被定义为HashMap< String,Boolean>同样.如果它是无类型的,那么你将无法假设它是Map中的布尔值.

public static void main(String[] args) {

    Map<String,Boolean>();
    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<String,Boolean>(); // untyped!
    states.put("b_StorageAvailable",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<String,Boolean> states = this.getExternalStorageStatus();

并且可以改变getExternalStorageStatus()的返回类型

private Map<String,Boolean> getExternalStorageStatus(){
 ...
}

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...