我需要做这样的事情:

创建一个可调用对象,并将其传递给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/

10-09 09:48