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

无法在内部类中声明Public static final String s = new String(“ 123”)

万知
2023-03-14
问题内容

我试图声明一个类,如下所示

class Outer{
    private final class Inner{
      public static final String s1 = new String("123");
      public static final byte[] bytes = new byte[]{0x00, 0x01};

      public static final String s2 = "123";
      public static final byte byte1 = 0x02;
    }
}

在上面的代码中,s1和byte不会编译,但是s2和byte1会编译。如果我将整个常量声明放在外部类中,则效果很好。我想念什么。有什么帮助吗?


问题答案:

阅读Java语言规范,第3版,第8.1.3节。

内部类是未显式或隐式声明为static的嵌套类。内部类不得声明静态初始化器(第8.7节)或成员接口。

这就是为什么您不能声明 new的原因 public static final String s1 = new String("123");

内部类不得声明静态成员,除非它们是编译时常量字段(第15.28节)。

这说明了为什么可以做 public static final String s2 = "123";

静态嵌套类可以具有静态成员。



 类似资料:
  • 我试图在react类中实现datepicker,在这个过程中,我在react类中声明了const,我正在处理这个类,并且得到了解析错误。有人能帮个忙吗申报有什么问题吗? 我得到下面的错误。 未能编译/src/组件/类别。js行11:9:解析错误:意外标记 9 |类别类别。组件{10| 11|const date=useState(new Date()); | ^ 12| 13|构造函数(props

  • 问题内容: 为什么我们要在Java类中声明一个接口? 例如: 问题答案: 当您想在对象中收集一些字段以强调概念时,可以创建一个外部类,也可以创建一个内部类(称为嵌套(静态)或内部)。 如果要强调这个合作类在原始对象使用之外完全没有意义(没有用)的事实,可以将其嵌套/内部。 因此,在处理某些层次结构时,可以描述一个“嵌套” ,它将由包装类的子类实现。 在JDK中,最显著的例子是内部接口中定义的接口,

  • 问题内容: 我在package中有2节课。接口类及其实现类。在具有类的文件中,出现以下错误:。 我正在使用Eclipse Helios和 删除和添加JRE的标准解决方案不起作用。我该如何解决? 编辑: 代码: Class: Class: 项目结构:ProjectName-> Java资源-> com.jax-> Class ,Class 问题答案: Java 8支持接口中的默认方法。在JDK 8中

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

  • 问题内容: 以下代码段是否会降低性能? 还是这段代码实际上更有意义? 如果在字节码中这两个完全相等,那么显然第一种方法在样式方面看起来更好,但我想确保确实如此。 问题答案: 在当今的编译器中,没有。我在最小范围内声明对象,因为对于下一个家伙而言,它更具可读性。

  • 我正在开发这个MainWindows类,它扩展了一个自动提供JFrame的SingleFrameApplication抽象类 执行main()方法时,检查用户是否已登录,如果用户未登录,则首先显示LoginFrame类实现的另一个JFrame窗口。在这里,用户插入其用户名和密码,然后可以登录并返回到我的主窗口(如果登录正常)。 此时,这个MainWindows类只包含一个LogOut按钮,并且此按