2013-01-16 34 views
5

Tôi đang học SQLite trong Android. Đối với SQLite tôi đang reffering developer.android.com. Nhưng tôi có một số Confusion trong khi đọc mã. Họ đã viết phương thức khởi tạo FeedReaderContract để ngăn chặn khởi tạo lớp FeedReaderContract nhưng chúng không xác định lớp học ở bất kỳ đâu và mối quan hệ giữa FeedReaderContractFeedEntry.Mục đích của FeedReaderContract là gì và cách xác định lớp bên trong trong OpenHelper Class

Here's link mà tôi đang đề cập đến. Tôi cung cấp mã. Làm thế nào tôi có thể định nghĩa lớp bên trong trong lớp openhelper. Ai có thể gợi ý cho tôi cách tốt ?.

Ví dụ, đoạn mã này xác định tên bảng và cột tên cho một bảng duy nhất:

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

Để tránh người khác vô tình instantiating lớp hợp đồng, cung cấp cho nó một constructor rỗng.

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

Tôi không thể hiểu câu hỏi của bạn. Bạn muốn giải thích mã nào? Mã trong bài viết bạn đã liên kết được giải thích trong bài viết. (Ví dụ: bài viết mô tả phần mã đầu tiên bạn trích dẫn, "đoạn mã này xác định tên bảng và tên cột cho một bảng". Bạn muốn biết thêm điều gì nữa?) –

+0

Tôi đã cung cấp một số ý nghĩa cho tiêu đề câu hỏi của bạn. Vui lòng quay lại, nếu nó không đưa ra câu hỏi của bạn. –

Trả lời

4

Tôi hiểu như:

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 
} 

Vì vậy, bạn không thể instatiate hợp đồng nhưng có thể truy cập vào tất cả các lớp hằng nội tại. Giống như dòng Ví dụ:

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

Truy cập FeedEntry hằng (TABLE_NAME_ID) của lớp bên trong FeedReaderContract lớp.

Hy vọng điều đó sẽ hữu ích.

Các vấn đề liên quan