Как переопределить методы интерфейса в сгенерированном классе таблицы базы данных?
Я использую GreenDao в своем проекте Android, и я успешно сгенерировал схему базы данных, но я застрял на одной проблеме. Мой сгенерированный класс должен реализовать интерфейс, который не связан с БД. В генераторе я использовал следующий метод:
myEntity.implementsInterface("com.my.app.myinterface");
и затем после генерации класс имеет аннотацию реализации этого интерфейса в своем заголовке, но, конечно, в коде нет методов Override. Я попытался поместить пакет с моим интерфейсом в проект генератора, но методы никогда не появляются автоматически. Должен ли я вставить их вручную в
// KEEP METHODS - put your custom methods here
...
// KEEP METHODS END
раздел?
1 ответ
Согласно документации GreenDAO, вам не нужно писать какой-либо метод, потому что классы переопределяются при каждом запуске (это означает, что каждое изменение, которое вы делаете, стирается), если вам нужно собственное поведение, вы можете использовать Keep Sections:
Хранить разделы
Классы сущностей перезаписываются при каждом запуске генератора. Чтобы разрешить добавление пользовательского кода в ваши организации, у greenDAO есть разделы "keep". Чтобы включить их, используйте enableKeepSectionsByDefault() в схеме или setHasKeepSections(true) для выбранных объектов. После включения в объектах создаются три секции keep:
// 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 сохраняется во время генерации кода. Рекомендуется сделать резервную копию или зафиксировать ваш код на случай, если что-то пойдет не так, как надо.
Также взгляните на этот связанный вопрос.