?我知道一個(gè)類的名兒,比如:"com.common.MyClass"但是在我自己的類中不能用這個(gè)來定義他的一個(gè)實(shí)例,因?yàn)檫@個(gè)類的名兒可能會變化,請看下面: ?
? class ? A{ ?
? ? ? ? ? // ? com.common.MyClass ? obj; ? 不能這樣定義 ?
? ? ? ? ? Object ? obj ? = ? Class.forName("com.common.MyClass").newInstance(); ?
? ? ? ? ? // ? 上面一句,生成一個(gè)自定義類的實(shí)例,但是我怎樣才能把obj強(qiáng)轉(zhuǎn)成com.common.MyClass這個(gè) ?
? ? ? ? ? // ? 類型呢???或者說怎么樣直接把obj定義成com.common.MyClass的類型???(動(dòng)態(tài)的來定義) ?
? ? ? ? ? // ? 請高手們指教啊!!! ?
? }
好像沒有辦法,如果是要調(diào)用MyClass的函數(shù)的話還是有辦法的 ?
? 比如: ?
? obj所屬的類有toLog方法,toLog(String ? str,Integer ? i),可以用下面的代碼調(diào)用這個(gè)函數(shù) ?
? Object ? obj ? = ? Class.forName("com.common.MyClass").newInstance(); ?
? Method ? logMethod ? = ? obj.getClass().getMethod("toLog",new ? Class[] ? { ? String.class, ? Integer.class ? }); ?
? Object ? logobj ? = ? logMethod.invoke(obj, ? new ? Object[] ? { ? "something",new ? Integer(7) ? });??