Java 嵌套类的实际用途是什么?

Java 嵌套类的实际用途是什么?,java,Java,我是一个Android编程的新手,对下面的代码没有什么困惑。 这部分代码来自android开发者网站: public final class FeedReaderContract { // To prevent someone from accidentally instantiating the contract class, // give it an empty constructor. public FeedReaderContract() {} /*

我是一个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文档和一些其他博客中阅读了一些关于嵌套类的文章,了解了使用嵌套类的以下原因:

  • 提供更好的封装
  • 如果一个类只与另一个类相关,那么我们最好将这两个类作为嵌套类
  • 但在这里,我想不出任何东西可以使用嵌套类


    创建嵌套类的确切目的是什么?

    此特定嵌套类用作与其主类相关的
    字符串
    常量的命名空间

    • 它是
      抽象的
      ,因此不用于实例化
    • 它实现了
      BaseColumns
      接口,本质上是一种将字符串常量“转储”到
      FeedEntry
      类中的方法
    为什么他们使用嵌套类而不是独立类


    使用嵌套类强调内部类与其外部类之间的“语义紧密性”。您的代码读者必须明白,
    FeedEntry
    只能在
    FeedReaderContract
    的上下文中进行解释。否则,
    FeedEntry
    就没有意义了。基本上,这是为代码的人类读者而做的,因为在这种情况下,编译器不会有什么不同。

    最好在Google上搜索。嵌套类可以访问host classI的字段。我对abstract和Basecolumns接口没有问题,我非常清楚地理解它们。我只是想了解使用这个嵌套类的逻辑。@RaazDhakal如果你了解发生了什么,你不了解他们逻辑的哪一部分?为什么他们使用嵌套类而不是独立类?或者是别的什么?耶,为什么他们用嵌套类而不是独立类??