我有这样的接口:为什么我的java类实现我不指望的方法?
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;
}
是的,它可以包含PlayingCards
@Override
public boolean addAll(Collection<? extends PlayingCard> c) {
// TODO Auto-generated method stub
return false;
}
这是好的,我想,只要收集元件延伸游戏牌,虽然这不符合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;
}
所以任何数组必须是对象,而不是播放卡?
为什么我从我的界面实现'怪异'功能,而不是我提供的泛型?我错过了什么?
我总是想知道是否有人在那里,只有一个人,谁实际上使用这种行为做一件好事。因为很多人觉得这很刺激。 –
@Slanec我对这个答案和评论的看法越多,我认为这就越向后兼容。 –
+1,它不是为了向后兼容。 '包含','删除'等采取'对象',因为'equals'采用'Object'并且它们的合约委托给'equals'合约。 –