2013-01-16 9 views
5

Sto imparando SQLite in Android. Per SQLite mi riferisco a developer.android.com. Ma ho avuto un po 'di confusione durante la lettura del codice. Hanno scritto il costruttore FeedReaderContract per impedire di istanziare la classe FeedReaderContract ma non definiscono la classe FeedReaderContract ovunque e la relazione tra FeedReaderContract e FeedEntry.Qual è lo scopo di FeedReaderContract e come definire la classe interna nella classe OpenHelper

Here's link cui mi riferisco. Fornisco il codice. Come posso definire la classe interna nella classe openhelper. Qualcuno potrebbe suggerirmi il modo buono?

Ad esempio, questo frammento di codice definisce il nome di tabella e colonna nomi per una singola tabella:

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"; 
    ... 
} 

per evitare che qualcuno istanziare accidentalmente la classe contratto, dare un costruttore vuoto.

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

Non riesco a capire la tua domanda. Che codice vuoi spiegare? Il codice dell'articolo che hai collegato è spiegato nell'articolo. (Ad esempio, l'articolo descrive la prima sezione di codice che hai citato, "questo snippet definisce il nome della tabella e il nome della colonna per una singola tabella".) Che altro vorresti sapere?) –

+0

Ho fornito un significato al titolo della tua domanda. Sentiti libero di fare il rollback, se non soddisfa la tua domanda. –

risposta

4

ho capito come:

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 
} 

quindi non è possibile instatiate il contratto, ma può accedere a tutte le classi interne costanti. Come la linea di esempio:

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

Accedere alle FeedEntry costanti (TABLE_NAME e _ID) della classe interna in FeedReaderContract classe.

Spero che aiuti.

Problemi correlati