Utility method expects interface and doesn't accept a class that implements said interface
本问题已经有最佳答案,请猛点这里访问。
我正在做一个网络开发项目,我正在开发几个具有"新闻订阅"功能的应用程序。我想确保每个有图片的项目都前后翻转一个开关,这样图片就可以左右交替,即使其中的一些项目没有图片。因此,我创建了一个接口:
1 2 3 4 5 6 7 |
现在,我的所有"新闻提要"都使用实现该接口的新闻项,而不管它们使用的是什么自定义字段。因此,我希望能够实例化这个实用程序类来处理实现该接口的项的列表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public class AlignmentAssigner { List<TextWithImageTile> listToAssign ; public AlignmentAssigner(List<TextWithImageTile> list) { this.listToAssign = list ; } public void alignList( ) { for ( TextWithImageTile listItem : listToAssign ) { ... } } } |
但是现在,当我试图向它发送一个homeitem类列表(实现textWithImageTile接口)时,它会抱怨类型不匹配。实现方法如下:
1 2 3 | List<HomeItem> homeItems = homeDAO.getHomeItems(); AlignmentAssigner alignmentAssigner = new AlignmentAssigner( homeItems ); |
我被告知,"构造器AlignmentAssigner(列表)未定义。"这里有交叉线吗?是否可以让一个方法处理一个特定接口的所有实现,只要它只被要求操作由该接口定义的字段和方法?如果是的话,我的代码中应该怎么修改?
你应该使用
1 2 3 | public AlignmentAssigner(List<? extends TextWithImageTile> list) { ... } |