我需要阅读一个标记来验证我是否会发送电子邮件,此标记位于LinkedHashMap
,因此我试图查看其中的ID,然后,我将不得不问,无论是真还是假,我都在尝试这个:
while(iterator.hasNext()){
LinkedHashMap<String, Object> fileMap = (LinkedHashMap<String, Object>) iterator.next();
userid = (Long)fileMap.get("USERID");
file.findAllFiles(userid);
if(file.findAllFiles(userid).contains(haveFiles = true)){
//send email
}else{
//do something
}
}
这是对的吗?
答案 0 :(得分:0)
假设它可以达到:
if(file.findAllFiles(userid).contains(haveFiles = true))
然后我认为问题本身就是这个问题。你所写的内容大致相当于写作
??? haveFiles = true;
if(file.findAllFiles(userid).contains(haveFiles))
(其中???可以是Object
,Boolean
或boolean
,也不能从您的代码快照中知道)
我打赌你可能想做的事情就像是
Boolean haveFiles = file.findAllFiles(userid).get("haveFiles");
if (Boolean.TRUE.equals(haveFiles) {
您所做的事情调用接收任何Object的contains
方法,如果该对象属于地图的值,则返回true。你可能不想要那个,我想你想要做的是检索与&#34; haveFiles&#34;相关联的值。键入地图,因为你必须使用get
方法。
PS:另外,如果file.findAllFiles(userid)
方法真正调用某些数据库内容,你可能只想调用一次(第一次看起来完全不需要我)。
答案 1 :(得分:0)
我认为你的if表达式存在逻辑错误。
haveFiles = true
将始终返回true,将表达式减少为:
file.findAllFiles(userid).contains(true)
因为(haveFiles = true)
将值true赋给变量haveFiles。
你应该在以下几行做一些事情:
Map<Flag, Boolean> keyValueMap = file.findAllFiles(userid)
if(keyValueMap.contains(Flag.HAVE_FILES) == true){
//send email
}else{
//do something
}
..假设你file.findAllFiles()返回一个带有标志及其布尔状态的map对象,Flag是一个包含所有支持标志的枚举。
表达式
(keyValueMap.contains(Flag.HAVE_FILES) == true)
仅当keyValueMap包含Flag.HAVE_FILES的条目且值为true时,才会计算为true。