5

我想向我的 greenDAO 实体添加一些自定义代码。我看到有类似保护区的东西。但我不喜欢将生成的类签入我的 git 存储库的想法。我想为此使用继承。

即我有一个实体User。所以我希望 greenDAO 生成一个名为UserBase. 我想扩展User并实现这样的方法:

public String getFullName() {
    return this.first + " " + this.last;
}

Wherefirstlast是托管属性。

但我不知道如何告诉 greenDAO 使用类User而不是生成的实体UserBase。有没有办法做到这一点?

4

2 回答 2

7

常见的方法是在生成的实体中使用“保留部分”。Keep 部分允许直接在生成的实体中添加成员和方法。在此处查看详细信息:http: //greendao-orm.com/documentation/modelling-entities/

于 2013-06-18T06:07:12.387 回答
7

我找到了解决这个问题的方法:

您可以为每个实体输入父级:

Entity user = schema.addEntity("User");
...
user.setSuperclass("UserBase");

因此,您可以将其实现UserBase为抽象类。

public abstract class UserBase {

  public String getFullName() {
    return getFirst() + " " + getLast();
  }

  public abstract int getFirst();
  public abstract int getLast();
}

这里的缺点是,您必须将生成的 getter 声明为抽象方法才能访问它们。

于 2013-06-05T04:50:56.987 回答