作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在学习 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/
我是一名优秀的程序员,十分优秀!