現在我已經把頭撞到了牆上,現在已經有好幾個小時了,我已經將它精簡到了一小段代碼。你能看到錯誤在哪裏嗎?Java泛型 - 在棘手的情況下遇到了問題
public class Experiment {
class BaseMessage<Messageable> {
Messageable once;
BaseMessage(Messageable x) {
once = x;
}
}
class BaseEntity {
boolean handleMessage(BaseMessage<BaseEntity> theMessage) {
return false;
}
}
class StateMachine<Thing> {
public boolean handleMessage(BaseMessage<Thing> msg) {
return true;
}
}
class VehicleEntity extends BaseEntity {
public StateMachine<VehicleEntity> state;
@Override
boolean handleMessage(BaseMessage<VehicleEntity> theMessage) {
return state.handleMessage(theMessage);
}
}
}
我得到一個編譯錯誤在這條線:
boolean handleMessage(BaseMessage<VehicleEntity> theMessage) {
的錯誤是:"The method handleMessage(Experiment.BaseMessage<Experiment.VehicleEntity>) of type Experiment.VehicleEntity must override or implement a super type method"
請注意,這是我真正的代碼樣本子集將其降低到最小,從而代碼沒有做任何明智的事情。哇,如果你能想出來,我會非常感激!
在'VehicleEntity'你有'的handleMessage(BaseMessage theMessage)''沒有的handleMessage(BaseMessage theMessage)'編譯器需要後者。 –
2012-02-14 01:22:10
命名泛型參數可能會被讀作類型的東西可能會在稍後變得混亂('BaseMessage'中的'Messageable','StateMachine'中的'Thing')。 – Jeffrey 2012-02-14 01:26:50
@Jeffrey,我知道你的意思了......當我寫作和閱讀代碼時,我發現一個字母的名字對我來說同樣令人困惑。更好的建議? – pitosalas 2012-02-14 01:30:18