java - 内部类实例的创建是如何进行的?

标签 java

当我创建内部类的实例时,我使用此代码。

OuterClass outerClass = new OuterClass();
OuterClass.InnerClass inerClass = outerClass.new InnerClass();

但是我不明白 outerClass.new InnerClass() 是如何工作的,为什么我们使用 .new 它就像 new 它的内部类一样,我明白它不是,但我不明白语法。

最佳答案

内部类是 POJO。因此,当您查看目标目录时,您会看到 2(两个)类文件。 因此,要创建内部类的实例,您可以使用new。

OuterClass outerClass = new OuterClass();  // create instance
OuterClass.InnerClass inerClass = outerClass.new InnerClass();  // innerClass has `this` to outerClass instance

这意味着 InnerClass 不是静态的(即具有 thisOuterClass 对象的引用)和 OuterClass 的实例 应在其之前创建。

OuterClass.InnerClass inerClass = new OuterClass.InnerClass();

这意味着 InnerClass 是静态的(即没有 this 引用 Outerlass 的对象),这意味着,这绝对是与包含 class OuterClassclass IninterClass 的两个独立文件相同(从 JVM 角度来看)。

关于java - 内部类实例的创建是如何进行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56680866/

相关文章:

java - 如何使用 Spring JMS 在 SQS 上设置 AUTO_ACKNOWLEDGE?

java - tdbloader2 因类路径错误而失败

针对字节码逆向工程的java常量

java - 从 JAX-WS Provider<SOAPMessage> 返回 SOAPFault

java - 如何从 Lucene 索引中排除数字?

java - 粘贴菜单项,附加到 JTextField 时不执行任何操作

java - 如何使用自定义字体/书法更改 tabLayout 的字体

java - 从语言环境到 ansi 代码页再到 java 字符集?

Java:右键单击文本字段上的复制剪切粘贴

java - maven如何确定传递依赖的版本?