Foo.class和Foo.class.getClass為什么不等
請問:
Class f1 = Foo.class;
Class f4 = f1.getClass();
System.out.println(f1==f4);
它倆為什么不等?
感覺上好像f1是f4的爹的感覺(不是繼承關系),這種理解對嗎?
請問:
Class f1 = Foo.class;
Class f4 = f1.getClass();
System.out.println(f1==f4);
它倆為什么不等?
感覺上好像f1是f4的爹的感覺(不是繼承關系),這種理解對嗎?
2016-02-05
舉報
2016-02-10
測試代碼如下。
控制臺輸出結果如下
2016-04-23
Class的實例對象都不一樣的.第二個是Class類調用getClass,第一個是Foo類調用getClass方法,對象不一樣吧
2016-02-17
謝謝,明白了
2016-02-11
這里f1是Class類的實例對象(也就是Foo這個類,它是Class類的對象);
你使用f1.getClass()獲得的是Class這個大類,不是上面Foo這個類,所以當然不相等。
如果你定義了Foo foo =new Foo() (這里foo是Foo的實例),
再調用foo.getClass()便能獲得Foo了。
2016-02-06
f1 與 f4的引用不是指向同一個對象 肯定為false,??? 通過反射方式1 ? Class c = (類名)Foo.class;
反射方式2? 首先實例化Foo對象? Foo f = new Foo();? 然后 Class c2 = (對象名)f.getClass();?? 這樣 c 和 c2 的引用指向同一對象(Foo)?? c 和 c2 的比較為true。。。