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(...) の 2 番目のパラメータ「new RowMapper() ...」の型は何ですか、それはどのような Java 構文ですか?

クラス RowMapper の新しいインスタンスを取得するように見えますが、中括弧までは、1 つのメソッド mapRow を持つクラスの宣言のように見えます。この構文は奇妙に見えますが、Java では見たことがありません。

それで、誰かがこれが何であるかを説明しますか?

どうもありがとう!

4

1 に答える 1

0

これは 1 つの匿名クラスです。

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

匿名クラスを使用すると、コードをより簡潔にすることができます。クラスの宣言とインスタンス化を同時に行うことができます。名前がないことを除けば、ローカル クラスに似ています。ローカル クラスを 1 回だけ使用する必要がある場合に使用します。

于 2013-06-11T18:02:57.173 に答える