当前位置: 首页 > 知识库问答 >
问题:

关于内部类的一些我不明白的事情

萧懿轩
2023-03-14

如果您想阅读全文https://docs . Oracle . com/javase/tutorial/Java/javaOO/local classes . html,请查看以下链接

本地类和内部类都不能定义或声明任何静态成员,接口也不能在块内声明,但当我尝试提供的代码作为示例时,代码编译没有错误。我确实写了我自己的例子

public class A { 
    class B { 
        public static String static-field = ...; 
        public static void Method() {...}
    }
}

这段代码编译时也没有错误。我有点困惑。静态方法和字段可以在内部类和局部类中声明吗?

共有2个答案

吴展
2023-03-14

自Java16起允许这样做:

虽然JEP 384允许静态局部类和接口,但它没有放松对静态成员类和内部类接口的限制。内部类可以在它的方法体中声明一个静态接口,但不能作为类成员。

作为自然的下一步,JEP 395进一步放宽了嵌套限制,允许静态类、方法、字段等。,在内部类中声明。

申屠俊发
2023-03-14

您很可能是使用 JDK 16 或更高版本进行编译的。您链接的文档仅适用于 Java 8,并且在站点的开头也被调用。

Java教程是为JDK 8编写的。本页中描述的示例和实践没有利用后续版本中引入的改进,并且可能使用不再可用的技术。

看看 JDK 16 中的 Java 语言更改。

在此版本中,内部类可以声明显式或隐式静态的成员。

 类似资料:
  • 我对遗传的理解是相当基础的。

  • Then God said: "Let there be light"; and there was light. And God saw that the light was good; and God separated the light from the darkness. 唠叨一些关于Python的事情 如同学习任何一种自然语言比如英语、或者其它编程语言比如汇编(这个我喜欢,可惜多年之后

  • 本文向大家介绍JavaScript中关于base64的一些事,包括了JavaScript中关于base64的一些事的使用技巧和注意事项,需要的朋友参考一下 base64 其实是一种编码转换方式, 将 ASCII 字符转换成普通文本, 是网络上最常见的用于传输8Bit字节代码的编码方式之一。 base64 由字母 a-z 、 A-Z 、 0-9 以及 + 和 / , 再加上作为垫字的 = , 一共6

  • 这是实现我的项目的CRUD操作的类的整个代码: 好的,正如您所看到的,使用@Transactional注释对一些方法进行了注释。 我正在阅读官方文档http://static.springsource.org/spring/docs/3.2.x/spring-framework-reference/html/transaction.html中关于该注释在方法上的使用,它看到了:使用@transac

  • 我需要改变复选框检查状态,但useCallback重新呈现组件很多次。我不明白它是如何工作的。我读过很多关于它的材料。 重新渲染的数量:

  • 我正在Celero git存储库中检查DoNotOptimizeAway的含义。但我还是不明白。请你用外行的话帮我理解一下好吗。尽你所能。