2015-06-23 54 views
0

我是Android編程的新手,在下面的代碼中幾乎沒有混淆。 這部分代碼是從Android開發者網站:該嵌套類的實際用途是什麼?

public final class FeedReaderContract { 
    // To prevent someone from accidentally instantiating the contract class, 
    // give it an empty constructor. 
    public FeedReaderContract() {} 

    /* Inner class that defines the table contents */ 
    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"; 
     ... 
    } 
} 

我讀到關於Java文檔中嵌套類和其他一些博客的一些文章並理解以下原因使用嵌套類:

  1. 提供更好的封裝。
  2. 如果一個類只涉及另一個類,那麼我們最好使這兩個類的嵌套類。

但是在這裏,我找不出任何使用嵌套類。

製作嵌套類的目的究竟是什麼?

+4

更適合在_Google_上進行搜索。 –

+0

嵌套類有權訪問主機類的字段 –

回答

2

對於String與其主類相關的常量,此特定嵌套類用作名稱空間

  • 這是abstract,所以它不適合實例
  • 它實現BaseColumns接口,這基本上是「傾銷」的字符串常量爲FeedEntry

爲什麼他們的方式使用嵌套類而不是獨立類?

嵌套類的使用強調了內部類與其外部類的「語義親密度」。它向您的代碼的讀者表示,FeedEntry只能在FeedReaderContract的情況下解釋。否則,FeedEntry是沒有意義的。本質上,這是爲代碼的讀者完成的,因爲在這種情況下,編譯器不會有任何區別。

+0

我對抽象和Basecolumns接口沒有問題,我對它們非常清楚。我只是想了解使用這個嵌套類的邏輯。 –

+0

@RaazDhakal如果你明白髮生了什麼,你不明白他們的邏輯的哪一部分?爲什麼他們使用嵌套類而不是獨立課?或者是別的什麼? – dasblinkenlight

+0

耶,爲什麼他們用嵌套類而不是獨立類? –

相關問題