我有這樣的接口:爲什麼我的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'合約。 –