【发布时间】:2013-06-18 19:26:48
【问题描述】:
我有这个界面:
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;
}
所以任何数组都必须是对象,而不是扑克牌?
为什么我的接口实现了“奇怪”的功能,而不是我提供的泛型?我错过了什么?
【问题讨论】:
标签: java generics inheritance interface