Tin*_*iny 12 java inner-classes static-classes
在下面的代码片段中,可能看起来它应该发出一些编译错误,但它不会:
class Outer {
public static class Inner {
static String obj = "Inner";
}
static Optional Inner = new Optional();
//The (inner) class name and the object name are same.
}
class Optional {
String obj = "Optional";
}
public class Main {
public static void main(String[] args) {
System.out.println(Outer.Inner.obj);
//Refers to the string inside the optional class
}
}
Run Code Online (Sandbox Code Playgroud)
该类中Outer有一个名为static的静态类Inner.另外,它声明了一个对象(静态)类Optional(static Optional Inner = new Optional();)
这个对象和类名(在类中Outer)是相同的Inner.程序显示Optional.预期Outer.Inner.obj内部唯一的表达式main()会显示,Inner但事实并非如此.然而Optional,实际输出是Optional该类的情况.
显示的一种方法Inner是将对象名称更改为其他名称.
static Optional Inner1 = new Optional();
Run Code Online (Sandbox Code Playgroud)
从它显示的输出中,似乎对类型名称(类Inner)选择了对象名称(或变量),因为它们具有相同的名称.这里适用的具体情况是什么?
| 归档时间: |
|
| 查看次数: |
1389 次 |
| 最近记录: |