作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
有人可以解释一下为什么在此代码段中对 X.Y.Z 的调用等同于 C.Z 吗?调用 X.Y.Z 意味着:- 它静态访问类 X然后- 属性 Y - 类型 C-(不是 Y 类)然后- C 中的属性 Z 导致输出“life is pain”。
但为什么调用 X.Y 访问的是属性而不是类?这背后的理论是什么?
public class A {
public static class X {
public static class Y {
public static String Z = "life is good";
}
public static C Y;
}
public static class C {
public static String Z = "life is pain";
}
public static void main(String[] args) {
System.out.println(X.Y.Z);
}
}
谢谢你的时间
最佳答案
没有什么特别有趣的,它归结为 JLS 指定的名称解析过程中的优先顺序。名称 X.Y
不明确,必须优先选择两个选项之一。
如果你真的对血淋淋的细节感兴趣,有一个 whole chapter in the JLS关于这个主题(我的猜测是,一旦您意识到自己打开了一个多么大的黄 hive 穴,您的兴趣就会很快减弱:)
关于java - 静态嵌套类,静态属性访问。脑筋急转弯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20174714/
我是一名优秀的程序员,十分优秀!