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

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

求教一個小問題

直接用foo1.print();就可以執行print方法了。

先創建實例對象c1,再用newInstance方法創建對象foo,再調用print方法。這樣有什么好處或者說是在什么情況下會這樣使用?

正在回答

2 回答

以下所說的只是自己的理解。如果有不對的情況請大家指正我。

一般情況下我們都會使用new Foo().print();這種情況下是我們肯定使用Foo的對象的時候我們會這么用。

但是當我們需要在運行時才能確認哪個類的print方法時會用到反射。

比如現在有個方法,根據我們傳遞的類名來調用方法

public void print(String className) {

? Class<?> c = Class.forName(className);

?......

}

這樣,只要你傳入正確的類名,不僅能調用Foo類的print方法,還可以使用Student類、User類的print方法

應用場景之一就是JDBC加載驅動

Class.forName("com.mysql.jdbc.Driver");

Class.forName("com.oracle.jdbc.OracleDriver");

根據類名找到不同的JDBC驅動,然后調用某方法。

還有其他應用場景,我覺得應該是Spring等,配置文件根據bean id來加載具體的類

可能web.xml等也是。。


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

鮮衣 提問者

非常感謝!
2015-07-30 回復 有任何疑惑可以回復我~
#2

鮮衣 提問者

我是化學專業畢業了自學Java的,感覺知識點好亂,連不起來。請問你剛學的時候會遇到這種情況嗎? 有什么比較好的方法去應對?如果有空可以在此指導一下,謝謝了!
2015-07-30 回復 有任何疑惑可以回復我~
#3

陽少兮_s 回復 鮮衣 提問者

如果你是剛學的話我不建議你看反射 一是對于新手來說不好理解,二是如果工作了 反射用的也少,或者說根本就用不上。等到你熟悉了java或者單位讓你用反射的時候再用也不遲。
2015-07-31 回復 有任何疑惑可以回復我~
#4

陽少兮_s 回復 鮮衣 提問者

我覺得馬士兵的視頻比較適合新手,他講的挺好的。你先不用把JAVA基礎全弄明白,什么SWING,什么多線程,什么反射,這些你都不用看,至少現在不用。
2015-07-31 回復 有任何疑惑可以回復我~
#5

鮮衣 提問者 回復 陽少兮_s

非常感謝你!(*^__^*)
2015-08-18 回復 有任何疑惑可以回復我~
#6

鮮衣 提問者 回復 陽少兮_s

如果針對找工作,應該側重那些課程呢?
2015-08-18 回復 有任何疑惑可以回復我~
查看3條回復

JAVA反射會讓你更加了解許多 框架機制, 讓你明白其實現原理。 他解剖了java類 可以自由發揮 ,運用得到可以減少很多代碼的編寫,方便了編程??梢詫懞芏喙玫墓δ茳c。 這里老師只是為了講課才這么講的 ,這是我們知道foo這個類里面有print,如果我們不知道呢 ,我們需要調用print方法怎么辦呢。或許會遇到這樣的需求,或者類似的,這都是要去解決的額!

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

鮮衣 提問者

雖然有很多不理解,但是還是要謝謝你!
2015-08-18 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

求教一個小問題

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

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

幫助反饋 APP下載

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

公眾號

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