我有这个界面:
public interface IDeck<T extends IDeck<T,S>,S extends ICard<S>> extends Comparable<T>, Collection<S>{
public Set<S> getDeck();
public void setDeck(Set<S> newDeck);
}
然后我让一个类实现它,这是标题和前几个方法:
public class PlayingCardDeck implements IDeck<PlayingCardDeck,PlayingCard> {
@Override
public int compareTo(PlayingCardDeck o) {
// TODO Auto-generated method stub
return 0;
}
到目前为止很好,我希望它具有可比性。
@Override
public boolean add(PlayingCard e) {
// TODO Auto-generated method stub
return false;
}
是的,它可以包含扑克牌
@Override
public boolean addAll(Collection<? extends PlayingCard> c) {
// TODO Auto-generated method stub
return false;
}
我认为这没问题,只要集合元素扩展 PlayingCard,尽管这与add(PlayingCard e)
方法不匹配。
@Override
public boolean contains(Object o) {
// TODO Auto-generated method stub
return false;
}
不挂断?为什么类型在这里Object
而不是PlayingCard
?
public Object[] toArray() {
// TODO Auto-generated method stub
return null;
}
所以任何数组都必须是对象,而不是扑克牌?
为什么我从我的界面实现了“奇怪”的功能,而不是我提供的泛型?我错过了什么?