当前位置: 首页 > 面试题库 >

内部类为什么不能声明静态成员?

夹谷信鸿
2023-03-14
问题内容

Java教程说,由于内部类与封闭类的实例相关联,所以它(内部类)本身不能定义任何静态成员。

对我来说很有趣,为什么内部类不能声明静态成员,例如某个private static字段,该内部类的实例可能会与同一内部类的其他实例共享这些成员?这仅仅是Java中必须被视为理所当然的事情的实现吗?


问题答案:

基本上只是一个任意决定。我们没有理由也 不可能 得到支持,但还算不上什么好的理由 支持它。只需在外部类中声明静态字段即可。

同样,该引用可能并不完全正确:我相信您可以在内部类中声明一个静态serialVersionUID。



 类似资料:
  • 问题内容: 我试图找到为什么不能将类创建为静态类的原因?喜欢: 问题答案: 在Java中,关键字通常将一个方法或字段标记为不存在,而不是每个类实例一次,而是一次。一个类一旦存在就已经存在,因此实际上,所有类都以这种方式是“静态的”,并且所有对象都是该类的实例。 确实对 内部 类具有含义,这是完全不同的:通常,内部类实例可以访问与其绑定的外部类实例的成员,但是如果内部类为,则它没有这样的引用并且可以

  • 问题内容: 我有点困惑。我已经按照google / android网站上的教程设置了一个,但出现以下错误: 当然,我确实有一个嵌套的静态类,但这是android / google定义它的方式。 为什么会出现此错误?我听说它最好用于嵌套类,这样您就不会浪费引用,但是最新版本的android studio抱怨 有任何想法吗? 问题答案: 直接回答您的问题: 内部类不能具有静态声明 完全是真的。这不是错

  • 问题内容: 为什么不能在Java中将类声明为静态类? 问题答案: 只有嵌套的类可以是静态的。这样,你可以使用嵌套类而无需外部类的实例。

  • 问题内容: 我知道创建一个非静态内部类对象需要一个外部类对象,而创建的非静态内部类对象会自动具有对该外部类对象的隐藏引用。但是为什么非静态内部类不能具有静态成员呢?Java设计人员只需要禁止在内部类的静态方法内访问非静态外部类字段,这样做会更有意义,不是吗? 如果在内部类中具有静态成员没有意义,那么为什么内部类可以通过继承具有静态成员的类来继承静态成员? 我也读了这篇文章。如前所述: 内部类可以继

  • 问题内容: 这可能表明我缺乏Java理解,但是我想知道为什么在大多数MapReduce程序中,映射器和reducer类都声明为静态的? 问题答案: 当将mapper和reducer类声明为另一个类的内部类时,必须将它们声明为静态的,以便它们不依赖于父类。 Hadoop使用反射为每个映射创建该类的实例或减少运行的任务。创建的新实例需要一个零参数构造函数(否则它将如何知道要传递的内容)。 通过声明内部

  • 问题内容: 为什么我们不能在非静态内部类中使用静态方法? 如果我将内部类设为静态,则可以工作。为什么? 问题答案: 因为内部类的实例与外部类的实例隐式关联,所以它本身不能定义任何静态方法。由于静态嵌套类无法直接引用其封闭类中定义的实例变量或方法,因此只能通过对象引用使用它们,因此在静态嵌套类中声明静态方法是安全的。