Test t=new Test();
和Test t=(Test)Class.forName().newInstance();
有什麼不同 其中的Class.forName()有代表什麼
對於Class.fromName()不太理解 請大神指點
Test t=new Test();
和Test t=(Test)Class.forName().newInstance();
這樣寫的確沒什麼區別,看上去後者還麻煩一點。
但是我昨天回答你了。有時候我們沒法知道類型,只能反射。
思考下這樣兩個場景,場景1:你在編寫一個開發環境,要求用戶導入一個類,你可以在編輯器中給出這個類有什麼方法,有什麼參數之類的提示,那麼這個類的類型不可能在你開發編輯器的時候知道。
也就是Test你不能這麼寫。它在你的代碼中沒有。那怎麼創建實例怎麼調用?只能用object類型。可是object類型沒有辦法new出一個實際上test的類型,就需要反射了。
再比如場景2:你編寫的程序允許第三方開發插件,或者你本身就是一個插件容器。好比Spring。那麼它怎麼能new你的bean出來呢?顯然還是要通過反射。你用配置文件以字符串的形式寫出類名,程序根據它創建實例,那就要Class.fromName()