Только чтобы не забыть
- Java 8 SE
- Eclipse 2019-12
- Spring Boot 2.2.4.RELEASE
Я пытаюсь изучить Spring Boot и пытаюсь понять, почему лямбда не компилируется. Вот пример весенней загрузки (который компилируется).
jdbcTemplate.query(
"SELECT id, first_name, last_name FROM customers WHERE first_name = ?", new Object[] { "Josh" },
(rs, rowNum) -> new Customer(rs.getLong("id"), rs.getString("first_name"), rs.getString("last_name"))
).forEach(customer -> log.info(customer.toString()));
А вот моя попытка изменить этот пример для моих собственных нужд:
@RestController
public class SwitchController {
@Autowired
JdbcTemplate jdbcTemplate;
@GetMapping
public Rows getSwitchRows() {
Rows switches = new Rows();
jdbcTemplate.query(
"SELECT swityp, oldkey, newkey, delete FROM table",
(rs, rowNum) -> new Switch(rs.getString("swityp"), rs.getString("oldkey"), rs.getString("newKey"), rs.getString("delete"))
).forEach(switch -> switches.addRow(switch));
return switches;
}
}
Лямбда в forEach()
выдает ошибку на ->
, которая говорит Syntax error on token "->", ( expected
, а также на switches.addRow(switch)
, которая говорит Syntax error on token "switch", delete this token
. Это почти как если бы forEach()
не узнал, что я набрал лямбду. Может быть, то, что я думал, было лямбда, не так. Если это так, то почему это не лямбда?
Вот мои Switch
и Rows
классы на случай, если это поможет:
Switch. java
public class Switch {
private final String switchType;
private final String oldKey;
private final String newKey;
private final String delete;
public Switch(String switchType, String oldKey, String newKey, String delete) {
this.switchType = switchType;
this.oldKey = oldKey;
this.newKey = newKey;
this.delete = delete;
}
public String getSwitchType() {
return switchType;
}
public String getOldKey() {
return oldKey;
}
public String getNewKey() {
return newKey;
}
public String getDelete() {
return delete;
}
}
Rows. java
public class Rows {
private Object[] rows;
public Rows () {
super();
}
public void addRow (Object row) {
rows[rows.length] = row;
}
}