一位朋友告诉我,这是学习Java范围的一个很好的例子,但我不明白。
什么是a
?我完全失去了!
public class scopesexample {
public static a a = new a<a>(a(new a()));
public static class a<a> {
a a;
public a() {
this.a = a(a(null));
}
public a(a a) {
this.a = a;
}
public a a(a a) {
return a;
}
public String toString() {
return "a";
}
}
public static a a(a a) {
return new a<a>(a);
}
public static void main(String[] args) {
System.out.println( a );
System.out.println( a( a ) );
System.out.println( a.a );
a<a> a = new a<a>(a(new a()));
System.out.println(a.a( a ));
System.out.println( a );
System.out.println( a );
System.out.println(a.class);
System.out.println(a.getClass());
System.out.println(a.a);
System.out.println(a( a ));
System.out.println(a( a ).a);
}
}
答案 0 :(得分:10)
我的建议是忽略你的朋友。
他或她要么把你搞砸了,要么他或她不知道学生如何了解范围。
首先,通过使用a
作为类,方法和变量名,他违反了代码风格指南和常识。
第二个问题是他将理解名称空间的问题添加到理解范围的问题中,这是不必要和混乱的。