可调用的 Dao 动态方法

Callable Dao dynamic method

我需要做这样的事情:

正在创建一个可调用对象,并将其传递给 ThreadPoolExecutor。 Callable其实就是一个Dao,应该执行不同的功能。因为不能直接将参数传递给 call() 函数,所以我想做这样的事情,在创建对象时立即执行代码:

像这样创建 class:

public class FooRecordDatabaseInsert {
    static {
        //execute some code
    }
}

可调用对象现在看起来像这样:

@Override
    public Foo call() {
        this.startOperation();
    }

但我必须向此 class 传递参数,例如实体。 是否有可能创建一个 class ,它有一个带参数的函数,在创建对象时立即执行?

或者可能有完全不同的解决方案?

您应该更喜欢使用以实体作为参数的构造函数。

如果我没理解错的话,你想要一个调用带有参数的 DAO 方法的 Callable。

所以你想要这样的东西:

final MyDAO dao = ...;
Callable<Foo> callable = new Callable<>() {
    @Override
    public Foo call() {
        return dao.someMethod(1, 2, 3);
    }
};

这称为匿名内部 class,在进行高级、复杂、多线程的工作之前,您绝对应该了解它们。

使用 Java 8,您可以使用 lambda 使事情变得更简单:

MyDAO dao = ...;
Callable<Foo> callable = () -> dao.someMethod(1, 2, 3);