嵌套类的实际目的是什么?

时间:2015-06-23 12:23:04

标签: java

我是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. 如果一个类只涉及另一个类,那么我们最好将这两个类作为嵌套类。
  3. 但是在这里,我无法找到任何使用嵌套类的东西。

    制作嵌套类的目的究竟是什么?

1 个答案:

答案 0 :(得分:2)

此特定嵌套类用作与其主类相关的String常量的名称空间

  • 它是abstract,因此它不用于实例化
  • 它实现了BaseColumns接口,这实际上是一种转移" dump"字符串常量进入FeedEntry
  

为什么他们使用嵌套类而不是独立的类?

使用嵌套类强调"语义接近"内部类的外部类。它向您的代码的读者提出FeedEntry只能在FeedReaderContract的上下文中解释。否则,FeedEntry毫无意义。从本质上讲,这是为代码的人类读者完成的,因为在这种情况下,编译器没有区别。