Java:HashMap包含key返回值错误

tsc*_*dia 0 java eclipse

我使用Eclipse 4.7.2在HashMap中发现了一个奇怪的行为.

以下行似乎对我来说是正确的:

infos.containsKey("desc") ? stmt.setString(8, infos.get("desc")) : 
stmt.setString(8, "No description");
Run Code Online (Sandbox Code Playgroud)

infos是的类型HashMap<String, String>PreparedStatement应充满的描述(的值desc)字段在地图上.

但是,Eclipse不是仅仅执行所写的操作,而是指示此行中存在多个错误:

 infos.containsKey**("desc")** ? stmt.setString(8, infos.get("desc")) :
 stmt.setString(8, "No description"**)**;
Run Code Online (Sandbox Code Playgroud)

我标记了Eclipse中带下划线的字符.

错误消息是:

Multiple markers at this line
    - Syntax error on token ")", delete this token
    - Syntax error, insert ")" to complete Expression
    - Type mismatch: cannot convert from String to 
     boolean
Run Code Online (Sandbox Code Playgroud)

的功能?操作者相当清楚,但行为不清楚.

有谁能告诉我我错在哪里或如何避免这个错误.

谢谢!

Psh*_*emo 5

问题是条件运算符boolean ? value1 : value2期望值但stmt.setString返回void表示缺少任何值.

更简单的解决方案将使用Map#getOrDefault(key, defaultValue)Java 8中提供的类似

stmt.setString(8, infos.getOrDefault("desc", "No description"));
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

177 次

最近记录:

7 年,10 月 前