我是
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(){ ... }
原文地址:https://www.jb51.cc/java/122038.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。