1

我是 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 中看到过。

那么有人会解释这是什么吗?

非常感谢!

4

1 回答 1

0

这是一个匿名类。

http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

匿名类使您能够使您的代码更简洁。它们使您能够同时声明和实例化一个类。它们类似于本地类,只是它们没有名称。如果您只需要使用一次本地类,请使用它们。

于 2013-06-11T18:02:57.173 回答