我正在設計問題,我必須設計一副牌。這裏是我的課怎麼看起來像解釋後面的編譯時錯誤wrt java泛型?
public interface ISuit {
String getLogo();
String getName();
}
public interface Icard<T extends ISuit> {
T getSuit();
String getNumber();
}
現在,我想寫一類爲每個13張牌,沿着這
public class Queen<E extends ISuit> implements Icard<E> {
@Override
public String getNumber() {
return "12";
}
@Override
public E getSuit() {
return new E;
}
}
線的東西我打算創建女王的對象像這
1:Queen<Hearts> queenOfhearts = new Queen<Hearts>();
但是,對於我的皇后班,我有一個getSuit編譯時錯誤。我不知道什麼應該是getSuit的定義。這個功能應該是抽象的嗎?
在設計中'Hearts'真的是它自己的類嗎?特別是對於排名和套裝,使用枚舉可能更有意義。 – 2014-09-21 08:19:11
@SillyFreak我希望能夠在將來添加新的西裝。另外我正在學習面向對象的概念。 – Dude 2014-09-21 08:20:32
這樣想:你需要'King'和'Queen'的類型安全嗎?就像你想要'Bike' vs'Car',或者你需要具有正確屬性的對象?如果是第二個,則使用兩個構造函數參數的'Card'類(如果您不想使用'enum')可能更有意義。 關於未來添加套裝,無論您是否爲每套套裝使用枚舉或自己的類,您都需要重新編譯代碼以添加新套裝。使每個訴訟只有一個對象可以讓你在運行時添加訴訟/不需要重新編譯。 – 2014-09-21 08:34:33