Fab*_* B. 17 java objective-c-blocks
Apple Objective-C语言的一个特性对我来说非常有用:我可以将代码块作为方法中的参数传递.
我也想用Java做到这一点.就像是:
myManager.doSomethingInTransaction(function() {
dao.save();
});
Run Code Online (Sandbox Code Playgroud)
因此myManager对象将在startTransaction()和endTransaction()方法之间执行我的代码.
有没有办法在Java中获得它?
Tay*_*mon 41
不幸的是,Java不支持这一点.但是您可以使用匿名类获得类似的功能.
为此,首先定义一个接口:
interface TransactionAction {
public void perform();
}
Run Code Online (Sandbox Code Playgroud)
doSomethingInTransaction然后应该定义TransactionAction为一个参数.
然后,当你调用它时,执行以下操作:
myManager.doSomethingInTransaction(new TransactionAction() {
public void perform() {
dao.save();
}
});
Run Code Online (Sandbox Code Playgroud)
Gui*_*let 12
这还不存在于Java(尚)中.解决方法是使用Runnable界面:
myManager.doSomethingInTransaction(new Runnable() {
public void run() {
dao.save();
}
});
Run Code Online (Sandbox Code Playgroud)
或任何具有单一方法的界面都可以.