2013-02-24 61 views
5

只是一个简单的问题:在android文档中看到的所有示例中,片段都是静态内部类。这是Android的要求吗?或者他们可以成为普通班级吗?有没有人理解Android的内部结构足以提供答案?片段作为静态类

从我在OCJP文档中读到的内容来看,这些静态内部类根本就不是类,而只是包含它们的类的静态成员,就像任何静态方法一样 - 比如主要。

您的见解值得赞赏。

回答

9

这是Android的一项要求吗?或者他们可以成为普通班级吗?

它们不能是常规(非静态)内部类。只有外部类的实例才能创建常规内部类的实例,并且Android需要为您重新创建片段(例如,在更改配置时)。碎片必须是普通的Java类或静态的内部类,并且它们需要有一个公共的零参数构造函数。

这些静态内部类根本就不是类,而只是包含它们的类的静态成员,就像任何静态方法(如main)一样。

我不知道你是如何得出这种解释的。

+0

这是从Sun Certified Programmer for Java 6学习指南(第681页)中学习的:“这个类本身并不是静态的,不存在静态类,静态修饰符在这种情况下表示嵌套class是外部类的静态成员,这意味着它可以像其他静态成员一样被访问,而不需要外部类的实例。这是一个主要方法,因为它是静态的。但你的评论有帮助。谢谢。 – user1837057 2013-02-24 13:26:07

+3

@ user1837057:我不同意该学习指南的解释。恕我直言,静态内部类几乎只是命名空间的语法糖 - 在大多数其他方面,它们与普通的Java类没有区别。 – CommonsWare 2013-02-24 13:29:56