我有兩個ListActivity類,我想傳入第三個類如下。原因是我在舊版Android中使用了棄用的android.text.ClipboardManager,而在另一個版本中使用了新的android.content.ClipboardManager。這些以不同的方式使用,需要分開。如何在傳遞給新類後最好地獲得子類的名稱?
活性1
import android.content.ClipboardManager;
public class Activity1 extends ListActivity {
ThirdClass tc = new ThirdClass(this);
}
活性2
import android.text.ClipboardManager; <--- different
public class Activity2 extends ListActivity {
ThirdClass tc = new ThirdClass(this);
}
三級欄目
public class ThirdClass {
public ThirdClass (ListActivity la){
//do stuff
}
//other methods
}
在該第三類我希望有共享被用於兩個ListActivity類代碼。但是,第三類需要能夠判斷它是否與Activity1或Activity2一起工作,以便它可以使用這些類中定義的特定變量和方法。這可以通過將類別名稱這樣進行:
((Activity1) la).whatever
我的問題是,什麼是檢索類名活性1或活性2的代碼從已向下傳遞到ListActivity變量「LA」最簡單的方法三級欄目?
我一直能夠弄清楚自己的唯一方法是使用getClass()和getName(),然後使用if語句如下。
String activity = la.getClass().getName();
if (activity == com.stuff.Activity1) {
//do stuff
}
但是必須有更好的方法,以便我可以直接使用「la」變量將類名轉換爲任何類名?
UPDATE
使用的instanceof將導致大量的重複代碼,因爲我不得不一次爲每個實例如下寫上去。我希望避免這種情況。
if (la instanceof Activity1) {
((Activity1) la).whatever
}
if (la instanceof Activity2) {
((Activity2) la).whatever
}
使用一個包含Stefan所需的方法的接口可能是一個好主意?我其實並不太瞭解接口,所以沒有考慮到這一點。我會研究它。
你能告訴我們更多關於你的課程的需求嗎?這似乎是一個設計問題,而不是像最初開始的那樣 – 2012-03-24 15:59:28
我已經更新了我的問題,以澄清爲什麼我現在要做這個。 – mattboy 2012-03-24 16:30:38
我在回答中添加了一些設計建議。 – 2012-03-24 16:38:50