我需要做这样的事情:
创建一个可调用对象,并将其传递给ThreadPoolExecutor。实际上,Callable是一个Dao,它应该执行不同的功能。因为无法将参数直接传递给call()函数,所以我考虑做这样的事情,以便在创建对象时立即执行代码:
创建一个这样的类:
public class FooRecordDatabaseInsert {
static {
//execute some code
}
}
现在,可调用对象可能看起来像这样:
@Override
public Foo call() {
this.startOperation();
}
但是我必须将像实体这样的参数传递给此类。
创建一个具有一个带有参数的函数的类的可能性很大,该类在创建对象时立即执行?
还是会有完全不同的解决方案?
最佳答案
如果我理解正确,则您需要一个带参数的DAO方法的Callable。
所以你想要这样的东西:
final MyDAO dao = ...;
Callable<Foo> callable = new Callable<>() {
@Override
public Foo call() {
return dao.someMethod(1, 2, 3);
}
};
这称为匿名内部类,在进行高级,复杂,多线程的工作之前,您一定应该了解它们。
使用Java 8,您可以使用lambda使事情变得更简单:
MyDAO dao = ...;
Callable<Foo> callable = () -> dao.someMethod(1, 2, 3);
关于java - 可调用道动态方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30133917/