Я видел этот фрагмент Java в книге Spring в действии, но я не знаком с конструкцией языка.
new RowMapper() {
public Object mapRow() throws SQLException, DataAccessException {
Motorist motorist = new Motorist();
motorist.setId(rs.getInt(1));
motorist.setEmail(rs.getString(2));
motorist.setPassword(rs.getString(3));
motorist.setFirstName(rs.getString(4));
motorist.setLastName(rs.getString(5));
return motorist;
}
}
Согласно Spring документации, RowMapper - это интерфейс. Он выглядит как определение анонимного класса, основанное на интерфейсе RowMapper. Ключевое слово new
немного запутанно, заставив меня задаться вопросом, создает ли это также один экземпляр анонимного класса. Я бы предположил, да, потому что если класс не имеет имени, как вы когда-нибудь создадите экземпляр после строки, которая его определяет?
Кто-нибудь может подтвердить мои предположения, что:
- это анонимное определение класса, основанное на интерфейсе RowMapper, и
- он создает один экземпляр этого класса?