我正在设计问题,我必须设计一副牌。这里是我的课怎么看起来像解释后面的编译时错误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