带通配符的Java接口?

时间:2015-03-02 11:28:04

标签: java

我需要编写一个接口,该接口将用于至少两种不同的实现,如下例所示:

public interface AsdDAO{
    public Set<_What_?> getEntities();
}

public class AsdPlayerDao implements AsdDAO{
   public Set<Player> getEntities();
}

public class AsdPartnerDao implements AsdDAO{
   public Set<Partner> getEntities();
}

这些类将用于检索像下一个实体的集合:

@Autowired
AsdPartnerDao dao;

public void method(){
    Set<Partner> partners = dao.getEntities();
    //Some other stuff
}

是否可以在public Set<?> getEntities();这里使用通配符。我的问题其实是如何编写界面是最好的方法?

2 个答案:

答案 0 :(得分:2)

看起来像你想要的

public interface AsdDAO<T>{
    public Set<T> getEntities();
}

public class AsdPlayerDao implements AsdDAO<Player>{
   public Set<Player> getEntities();
}

public class AsdPartnerDao implements AsdDAO<Player>{
   public Set<Partner> getEntities();
}

也可以约束类型,例如

public interface AsdDAO<T extends SomeInterfaceYouHave>{

答案 1 :(得分:0)

如果实体没有实现公共接口:

public interface AsdDAO{ public Set<?> getEntities(); }

如果他们这样做:

public interface AsdDAO{ public Set<? extends YourInterface> getEntities(); }