Какова цель FeedReaderContract и как определить внутренний класс в OpenHelper Class

Я изучаю SQLite в android. Для SQLite я предлагаю developer.android.com. Но при чтении кода я получил некоторое замешательство. Они написали конструктор FeedReaderContract чтобы предотвратить создание экземпляра класса FeedReaderContract но они не определяют класс FeedReaderContract любом месте и связь между FeedEntry и FeedEntry .

Вот ссылка, на которую я имею в виду. Я предоставляю код. Как определить внутренний класс в классе openhelper. Может ли кто-нибудь предложить мне хороший способ?

Например, этот фрагмент определяет имена таблиц и столбцов для одной таблицы:

 public static abstract class FeedEntry implements BaseColumns { public static final String TABLE_NAME = "entry"; public static final String COLUMN_NAME_ENTRY_ID = "entryid"; public static final String COLUMN_NAME_TITLE = "title"; public static final String COLUMN_NAME_SUBTITLE = "subtitle"; ... } 

Чтобы кто-то случайно не создавал экземпляр класса контракта, дайте ему пустой конструктор.

  //Prevents the FeedReaderContract class from being instantiated. private FeedReaderContract() {} 

Я понимаю:

 public static class FeedReaderContract{ // Prevents the FeedReaderContract class from being instantiated. private FeedReaderContract() {} //The FeedEntry table definition public static abstract class FeedEntry implements BaseColumns { public static final String TABLE_NAME = "entry"; public static final String COLUMN_NAME_ENTRY_ID = "entryid"; public static final String COLUMN_NAME_TITLE = "title"; public static final String COLUMN_NAME_SUBTITLE = "subtitle"; ... } //more tables definition } 

Таким образом, вы не можете установить контракт, но можете получить доступ ко всем внутренним классам Constants. Как строка примера:

 private static final String SQL_CREATE_ENTRIES = "CREATE TABLE " + FeedReaderContract.FeedEntry.TABLE_NAME + " (" + FeedReaderContract.FeedEntry._ID + " INTEGER PRIMARY KEY," //continues 

Получите доступ к константам FeedEntry ( TABLE_NAME и _ID ) внутреннего класса в классе FeedReaderContract .

Надеюсь, поможет.