如何覆盖生成的数据库表类中的接口方法?

Posted

技术标签:

【中文标题】如何覆盖生成的数据库表类中的接口方法?【英文标题】:How to override the interface methods in the generated database table class? 【发布时间】:2016-03-23 18:55:16 【问题描述】:

我在我的 android 项目中使用 GreenDao,并且我已经成功生成了我的数据库架构,但是我遇到了一个问题。我生成的类需要实现一个与 db 无关的接口。在生成器中我使用了以下方法:

myEntity.implementsInterface("com.my.app.myinterface");

然后在生成后,该类在其标题中具有此接口的实现注释,但代码中当然没有 Override 方法。我尝试在生成器项目中放置一个带有我的接口的包,但仍然不会自动出现方法。我应该在

中手动插入它们吗?

// KEEP METHODS - put your custom methods here ... // KEEP METHODS END

部分?

【问题讨论】:

【参考方案1】:

根据GreenDAO documentation,您不需要编写任何方法,因为每次运行都会覆盖类(这意味着您所做的每项更改都将被删除),如果您需要自己的行为,您可以使用 Keep Sections :

保留部分

实体类在每次生成器运行时都会被覆盖。为了允许向您的实体添加自定义代码,greenDAO 具有“保留”部分。 要启用它们,请在架构上使用 enableKeepSectionsByDefault(),或在选定实体上使用 setHasKeepSections(true)。启用后,实体中会生成三个保留部分:

// KEEP INCLUDES - put your custom includes here
// KEEP INCLUDES END
...
// KEEP FIELDS - put your custom fields here
// KEEP FIELDS END
...
// KEEP METHODS - put your custom methods here
// KEEP METHODS END

现在,您可以将自定义代码放在 KEEP [...] 和 KEEP [...] END 之间。并且不要触摸 KEEP cmets。 在代码生成期间会保留 keep 部分内的代码。备份或提交代码是个好主意,以防出现意外错误。

也可以关注this related question。

【讨论】:

以上是关于如何覆盖生成的数据库表类中的接口方法?的主要内容,如果未能解决你的问题,请参考以下文章

泛型集合类中的链表类随机产生100个有序整数(单词)的链表

泛型集合类中的链表类随机产生100个有序整数(单词)的链表

Java语言描述顺序表类,顺序表类的基本操作实现

在模板基类中为继承类中的可选覆盖生成虚拟方法

线性表的顺序存储结构之顺序表类的实现_Java

如何覆盖或向单独类中的方法添加属性,以便刷新 WCF 服务不会影响我的更改?