我在Spring in Action一书中看到了这个Java片段,但我对语言结构并不熟悉.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
根据Spring文档,RowMapper是一个接口.它看起来像一个基于RowMapper接口的匿名类定义.该new
关键字有点令人困惑,让我想知道这是否也创建了一个匿名类的实例.我猜是的,因为如果类没有名称,你将如何在定义它的行之后创建一个实例?
任何人都可以证实我的猜测:
该代码以匿名方式实现接口。
语法类似于:
Runnable runnable = new Runnable() {
public void run() {
}
};
Run Code Online (Sandbox Code Playgroud)
注意声明末尾的分号。这里的 runnable 对象虽然持有对 Runnable 接口的引用,但实际上包含已实现的对象。这就是运行时多态性!
归档时间: |
|
查看次数: |
16846 次 |
最近记录: |