2013-06-11 77 views
0

我是新來春和閱讀「在行動春天」的書,我有一個關於下面的例子問題:Spring框架的JdbcTemplate的queryForObject方法

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中看到它。

那麼有人會解釋這是什麼?

非常感謝!

回答

1

這是一個匿名類。

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

匿名類讓你讓你的代碼更簡潔。他們使用 可以同時聲明和實例化一個類。他們 就像本地類,只是它們沒有名字。如果您只需要使用一次本地類,則使用它們 。

+0

謝謝,它看起來像一個匿名類應該總是有一個父類/接口? –

+0

@AlfredZhong匿名類總是擴展另一個類/接口,所以是的,它需要有一個'父',你可以覆蓋方法。 – fmodos

相關問題