Java中的名称范围

时间:2012-09-14 15:09:16

标签: java

一位朋友告诉我,这是学习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);
    }
}

1 个答案:

答案 0 :(得分:10)

我的建议是忽略你的朋友。

他或她要么把你搞砸了,要么他或她不知道学生如何了解范围。

首先,通过使用a作为类,方法和变量名,他违反了代码风格指南和常识。

第二个问题是他将理解名称空间的问题添加到理解范围的问题中,这是不必要和混乱的。