亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Foo.class和Foo.class.getClass為什么不等

請問:

Class f1 = Foo.class;

Class f4 = f1.getClass();

System.out.println(f1==f4);

它倆為什么不等?

感覺上好像f1是f4的爹的感覺(不是繼承關系),這種理解對嗎?

正在回答

5 回答

測試代碼如下。

class?Foo?{
}

public?class?plusplusi?{
?public?static?void?main(String[]?args)?{
??Class?f1?=?Foo.class;
??Class?f4?=?f1.getClass();
??System.out.println(f1?==?f4);
??System.out.println(f1);
??System.out.println(f4);
?}
}

控制臺輸出結果如下

false
class?test.Foo
class?java.lang.Class


1 回復 有任何疑惑可以回復我~

Class的實例對象都不一樣的.第二個是Class類調用getClass,第一個是Foo類調用getClass方法,對象不一樣吧

0 回復 有任何疑惑可以回復我~

謝謝,明白了

0 回復 有任何疑惑可以回復我~

這里f1是Class類的實例對象(也就是Foo這個類,它是Class類的對象);

你使用f1.getClass()獲得的是Class這個大類,不是上面Foo這個類,所以當然不相等。

如果你定義了Foo foo =new Foo() (這里foo是Foo的實例),

再調用foo.getClass()便能獲得Foo了。

2 回復 有任何疑惑可以回復我~

f1 與 f4的引用不是指向同一個對象 肯定為false,??? 通過反射方式1 ? Class c = (類名)Foo.class;

反射方式2? 首先實例化Foo對象? Foo f = new Foo();? 然后 Class c2 = (對象名)f.getClass();?? 這樣 c 和 c2 的引用指向同一對象(Foo)?? c 和 c2 的比較為true。。。

4 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

Foo.class和Foo.class.getClass為什么不等

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號