gpt4 book ai didi

java - 编写java包装器

转载 作者:行者123 更新时间:2023-11-30 12:01:01 24 4
gpt4 key购买 nike

1.这就是我的 dao 类的样子,其中事务代码为每个方法不断重复。可以将这些片段代码放在父类(super class)中,这样我就不需要一直重复下面的代码了吗?任何详细说明如何做到这一点?
2.如果需要把snippet放在super.class中。 super.class 应该是静态的吗?

 for (int i = 0; i < NUM_RETRIES; i++) {
pm.currentTransaction().begin();

<all my code will be here>

try {
pm.currentTransaction().commit();
break;

} catch (JDOCanRetryException ex) {
if (i == (NUM_RETRIES - 1)) {
throw ex;
}
}
}

最佳答案

仅解决“提取到父类(super class)”问题,您可以:

在你的基类中放置:

public abstract Object doTransaction();

public abstract Object executeTransaction(some params){
for (int i = 0; i < NUM_RETRIES; i++) {
pm.currentTransaction().begin();

this.doTransaction();

try {
pm.currentTransaction().commit();
break;

} catch (JDOCanRetryException ex) {
if (i == (NUM_RETRIES - 1)) {
throw ex;
}
}
}
}

在派生类中,重新定义 doTransaction 方法

public Object doTransaction() {

//access database and stuff;
}

请相应地调整返回类型和参数。

请注意,没有什么是静态的(静态方法不能被覆盖),它只是 template method pattern. 的一个实现。

关于java - 编写java包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1275978/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com