Java 可调用Dao动态方法
我需要这样做:Java 可调用Dao动态方法,java,multithreading,class,jpa,callable,Java,Multithreading,Class,Jpa,Callable,我需要这样做: @Override public Foo call() { this.startOperation(); } final MyDAO dao = ...; Callable<Foo> callable = new Callable<>() { @Override public Foo call() { return dao.someMethod(1, 2, 3); } }; 创建可
@Override
public Foo call() {
this.startOperation();
}
final MyDAO dao = ...;
Callable<Foo> callable = new Callable<>() {
@Override
public Foo call() {
return dao.someMethod(1, 2, 3);
}
};
创建可调用的,并将其传递给ThreadPoolExecutor。可调用的实际上是一个Dao,它应该执行不同的函数。因为不可能直接将参数传递给call()函数,所以我考虑这样做,在创建对象时立即执行代码:
创建这样的类:
public class FooRecordDatabaseInsert {
static {
//execute some code
}
}
callable现在可以如下所示:
@Override
public Foo call() {
this.startOperation();
}
final MyDAO dao = ...;
Callable<Foo> callable = new Callable<>() {
@Override
public Foo call() {
return dao.someMethod(1, 2, 3);
}
};
但我必须传递参数,就像一个实体传递给这个类一样。
是否有可能创建一个类,该类有一个带参数的函数,在创建对象时立即执行该函数
或者可能有完全不同的解决方案吗?您应该更喜欢使用以实体作为参数的构造函数。如果我理解正确,您需要一个调用DAO的方法并带有参数的可调用函数 所以你想要这样的东西:
@Override
public Foo call() {
this.startOperation();
}
final MyDAO dao = ...;
Callable<Foo> callable = new Callable<>() {
@Override
public Foo call() {
return dao.someMethod(1, 2, 3);
}
};
final MyDAO=。。。;
Callable Callable=new Callable(){
@凌驾
公共Foo call(){
返回dao.somethod(1,2,3);
}
};
这称为匿名内部类,在执行高级、复杂、多线程操作之前,您应该明确了解它们
使用Java 8,您可以使用lambdas使事情变得更简单:
MyDAO dao = ...;
Callable<Foo> callable = () -> dao.someMethod(1, 2, 3);
MyDAO=。。。;
Callable Callable=()->dao.someMethod(1,2,3);
但返回异常又如何呢?这可以通过构造函数实现吗?您的类应该有一个实体私有字段。构造函数将仅使用实体参数设置该字段的值。可能导致异常的处理将在调用方法中。当然,您可以在那里抛出异常。这绝对是完美的,从未考虑过这样的解决方案。我将阅读有关匿名内部类的内容,非常感谢!