gpt4 book ai didi

java - Java 内部类

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:17:04 28 4
gpt4 key购买 nike

我在学习 Java 中阅读了有关内部类的内容。我找到了这段代码

class Animal{
class Brain{
}
}

编译后,javap 'Animal$Brain' 输出为

Compiled from "Animal.java"class 
Animal$Brain {
final Animal this$0;
Animal$Brain(Animal);
}

这解释了内部类如何在内部类构造函数中获取对其封闭实例的引用。但是当我像这样将内部类定义为私有(private)时

class Animal{
private class Brain{
}
}

然后在编译之后,javap 'Animal$Brain' 给出输出为

Compiled from "Animal.java"
class Animal$Brain {
final Animal this$0;
}

那么为什么输出不同呢?为什么没有显示内部类构造函数?在后一种情况下,内部类也正在获取封闭类实例的引用。

最佳答案

好问题。根据this ,

如果没有使用任何选项,javap 打印出传递给它的类的包、 protected 和公共(public)字段和方法

自从您声明了 Brain作为私有(private)内部类,它的默认构造函数将隐式设为私有(private),因此在 Animal 之外不可见。类。

引用:http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.8.9

关于java - Java 内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41303833/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com