【问题标题】:In Java inner class final static works without constructor only [duplicate]在Java内部类中,最终静态仅在没有构造函数的情况下工作[重复]
【发布时间】:2020-10-01 10:02:15
【问题描述】:

我有一个如下所示的内部类:

class Inner {
    final static String ok = "something";
    final static String nok = new String("something");
}

在第二个声明中发生编译时错误,但在第一个声明中没有。 似乎非静态内部类不允许显式调用构造函数。也不允许使用静态初始化器。

谁能解释一下背景?

【问题讨论】:

标签: java


【解决方案1】:

如果你让你的内部类静态它会工作:

public class Outer {

   static class Inner {
       final static String ok = "something";
       //Now this is ok also
       final static String nok = new String("something");
       }
}

如果你想允许显式调用构造函数,你必须显式声明内部类是静态的。这是因为内部类没有显式或隐式声明为静态,如果你想使用构造函数,你的工作就是将其标记为静态在里面调用。

【讨论】:

    猜你喜欢
    • 2013-08-12
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2020-08-24
    • 2019-03-29
    • 2014-02-03
    • 2013-02-18
    相关资源
    最近更新 更多