【发布时间】:2015-07-09 07:20:19
【问题描述】:
我对 Java Lambda 表达式有疑问。我正在使用 Spring 4、JdbcTemplate、Java 8。 Intellij IDEA 显示“循环推理”。它是什么以及如何修复它?感谢您的关注。
@Override
public User getUser(long id) {
return jdbcTemplate.query("SELECT * FROM user WHERE id = ?",
ps -> {
ps.setLong(1, id);
},
(rs, rowNum) -> {
return new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getLong(4), rs.getBoolean(5));
});
}
已解决 此函数返回列表,而不是用户。正确的功能是这样的:
@Override
public User getUser(long id) {
return jdbcTemplate.query("SELECT * FROM user WHERE id = ?",
ps -> {
ps.setLong(1, id);
},
(rs, rowNum) -> {
return new User(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getLong(4), rs.getBoolean(5));
}).get(0);
}
【问题讨论】:
-
缺少截图:D
-
你有什么 IntelliJ 版本?
-
IntelliJ IDEA 14 Ultimate
-
看来,你已经采取了危险的回归方式。如果没有对象,则必须抛出空指针。我觉得这种方式安全舒适:list.stream().findFirst().orElse(null);
标签: java intellij-idea lambda