昨天Coobird的excellent answer之後,我無法使反射在Java中工作。我會先發布課程然後再詳細介紹。在Java中使用反射時無法投射
StHandler.java
package ds; public interface StHandler {
public void read();
}
DiStHandler.java
package ds;
public class DiStHandler {
public void read() {
System.out.println("Hello world");
}
Server.java
package ds;
public class Server {
public static void main(String[] args) {
try {
Class<?> clazz = Class.forName("ds.DiStHandler");
StHandler input = (StHandler) clazz.newInstance();
input.read();
}
catch(Exception e) {}
}
我所試圖做的事:我有一個接口StHandler,這在我想要一個單一的方法:read()。 DiStHandler是一個可從類路徑中獲得的實現類。我試圖從這裏調用讀取方法。
問題:上線
StHandler input = (StHandler) clazz.newInstance();
我收到的錯誤:ds.DiStHandler cannot be cast to ds.StHandler
我一直在努力,現在調試這個了近兩個小時,但對我的生活不能工作了什麼問題是。我在DiStHandler中沒有implements StHandler
的原因是因爲我在一個單獨的項目中創建了DiStHandler。
我將不勝感激這方面的任何建議。 在此先感謝非常多,
中號
嗯,我認爲是這樣 - 我想知道:如果我將接口類StHandler放入與DiStHandler相同的項目,並且讓DiStHandler實現,編譯,然後從生成的文件中獲取DiStHandler.class?非常感謝你的答覆。 :) – Myn 2011-01-07 10:03:11