2010-03-31 98 views
0

我加載使用鑄造對象的

的Class.forName(klassname,假,裝載機)

一類這種i之後創建使用

klass.newInstance(一個實例); 它會返回一個對象類型。我想將它轉換爲特定類型(即.Klassnamw實例)。我使用普通投射,但由於它在運行時沒有解析而被掛起。我該如何投射它?Hellp

+0

這不是邏輯上不可行嗎? – shinkou 2010-03-31 05:29:27

回答

3

Casting通常用來給編譯器提供更多信息。你在編譯時沒有這些信息,所以你不能把它給給編譯器。

此外,鑄造的重點通常是讓你可以找到某些其他人不會知道的成員 - 但如果你在執行時間之前不知道這個類,你怎麼知道這些成員?

在某些情況下,它會很好,但它們非常罕見。創建完實例後,你想要做什麼?如果你正試圖調用你在編譯時知道的方法,你可以使這些方法成爲接口的一部分,並將其轉換爲接口

+0

謝謝reply.Yes我會調用一些方法,我知道我會嘗試與接口。其實我需要它的休眠框架。我想要一個會話實例。我試圖通過加載配置並創建它的實例來實現它。之後,我創建了sessionfactory,然後session.I在第一部分本身被擊中 – Steven 2010-03-31 05:33:53

+0

@Steven:您應該能夠轉換爲Configuration,SessionFactory或Session,否? – Thilo 2010-03-31 05:39:49

+0

謝謝我得到了你們倆都說的 – Steven 2010-03-31 05:40:36

0

您正在使用反射,因爲您不知道(或無法解析)要在編譯時加載的類。

因此,您不能上課。

除非有一個接口(或父類)可以在編譯時解析(並因此轉換爲),否則必須使用反射來執行對該對象有用的任何操作。

+0

是的,謝謝得到它 – Steven 2010-03-31 05:40:53