问题描述
public void insert(final String key, final String value) throws Exception {
execute(new Command(){
public Void execute(final Keyspace ks) throws Exception {
ks.insert(key, createColumnPath(COLUMN_NAME), bytes(value));
return null;
}
});
}
新的Command()的主体看起来像一个内联方法?
这叫什么,我想完全理解这一点。
1楼
这是一个匿名的内部阶级 。
您正在创建一个派生自Command
类的类,或者只是实现Command
接口。
在这种情况下,你只是覆盖一个方法,但你可以覆盖更多 - 以及有额外的字段等。
Java(目前)没有任何与C#匿名方法完全相同的东西,如果你正在考虑的话。 一个匿名的内部类可能是最接近它的东西。
2楼
这是一个 。
Command
是先前定义的接口或类,因此这相当于:
public void insert(final String key, final String value) throws Exception {
class MyCommand implements Command { // or "extends Command"
public Void execute(final Keyspace ks) throws Exception {
ks.insert(key, createColumnPath(COLUMN_NAME), bytes(value));
return null;
}
}
execute(new MyCommand());
}
3楼
这是一个匿名的内部阶级。 在这种情况下,它很可能是Command接口或抽象类的实现。
4楼
如上所述,这是一个匿名的内部阶级。 您经常将此方法视为实现单方法接口的快速方法。
像Groovy和JavaScript这样的语言使用闭包来做这种事情。