我是Spring的新手并阅读“Spring in Action”一书,我对以下示例有疑问:
public Employee getEmployeeById(long id) {
return jdbcTemplate.queryForObject(
"select id, firstname, lastname, salary " +
"from employee where id=?",
new RowMapper<Employee>() {
public Employee mapRow(ResultSet rs,
int rowNum) throws SQLException {
Employee employee = new Employee();
employee.setId(rs.getLong("id"));
employee.setFirstName(rs.getString("firstname"));
employee.setLastName(rs.getString("lastname"));
employee.setSalary(rs.getBigDecimal("salary"));
return employee;
}
},
id);
}
queryForObject(...)的第二个参数是什么类型“new RowMapper()...”,那是什么样的Java语法?
它看起来像获取一个类RowMapper的新实例,直到大括号,它看起来像只有一个方法mapRow的类声明。这种语法看起来很奇怪,我从未在Java中看到它。
那么有人会解释这是什么吗?
非常感谢!
答案 0 :(得分:0)
这是一个匿名课程。
http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html
匿名类使您可以使代码更简洁。他们 使您能够同时声明和实例化一个类。他们 就像当地的班级,除了他们没有名字。使用它们 如果你只需要使用一次本地课程。