如何覆盖生成的数据库表类中的接口方法?
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。
【讨论】:
以上是关于如何覆盖生成的数据库表类中的接口方法?的主要内容,如果未能解决你的问题,请参考以下文章