我是Java新手,我嘗試製作一些非常簡單的Java應用程序。在我的嘗試中,我遇到了泛化的問題。我有一個人對象的列表。 人可以是父親或母親。Java Passing Type作爲函數期望子類型的參數
然後,我有幾個同名方法eat(...)但它們在輸入參數上有所不同。這些方法不是類類的一部分。其中一種方法接受母親作爲參數,另一種接受父親。
問題是如何動態決定在人列表上調用哪個方法。當我試圖通過列表迭代並調用o.eat(迭代器)它與編譯器錯誤提示,因爲迭代器是型人的,但我吃方法要母親或父親作爲參數。編譯器完全不認識,我有方法,每種類型的人
到目前爲止,我已經解決了我的問題)如果聲明中,我通過的GetType(比較類類型方法既母親和父親如果它等於我可以將人轉換爲適當的類型。
代碼如下所示:
if (person.getClass().equals(Father.class)) {
theView.eat((Father) person);
}
if (person.getClass().equals(Mother.class)) {
theView.eat((Mother) person);
}
吃法看起來如下:
public void eat(Mother m){
textArea.append(m.breakfast);
textArea.append(m.lunch);
textArea.append(m.dinner);
}
午餐晚餐和早餐都只是一些字符串,指明什麼人做
人的代碼是通過Person對象列表的迭代器
是t這裏有什麼更好的解決方案來實現這個過程的自動化?
Thx提前。
它可能幫助如果包含在你的問題來證明你的問題的一些代碼。 – khelwood
我真的沒有得到他想要做的事情:/ – Seth