实用程序方法需要接口并且不接受实现所述接口的 class

Utility method expects interface and doesn't accept a class that implements said interface

我正在从事一个 Web 开发项目,并且正在开发几个具有 "news feed" 功能的应用程序。我想确保每个有图片的项目来回翻转开关,以便图片在左右交替,即使中间的某些项目没有图片。所以,我创建了一个接口:

public interface TextWithImageTile {

    public abstract String getOrientation( ) ;

    public abstract void setOrientation( String orientation ) ;

}

现在,我的所有 "news feeds" 都使用实现该界面的新闻项目,无论每个人使用什么自定义字段。所以,我曾期望能够实例化这个实用程序 class 来处理实现该接口的项目列表:

public class AlignmentAssigner {

    List<TextWithImageTile> listToAssign ;

    public AlignmentAssigner(List<TextWithImageTile> list) {

        this.listToAssign = list ;

    }

    public void alignList( ) {

        for ( TextWithImageTile listItem : listToAssign ) {
            ...
        }

    }

}

但是现在,当我尝试向它发送一个 HomeItem 列表 classes - 它实现了 TextWithImageTile 接口 - 它抱怨类型不匹配。这是实现:

List<HomeItem> homeItems = homeDAO.getHomeItems();

AlignmentAssigner alignmentAssigner = new AlignmentAssigner( homeItems );

有人告诉我,"The constructor AlignmentAssigner(List) is undefined." 我这里有什么问题吗?是否可以让一个方法处理特定接口的所有实现,只要它只被要求对所述接口定义的字段和方法进行操作?如果是这样,如何 - 或者我的代码中需要更改什么?

你应该使用

public AlignmentAssigner(List<? extends TextWithImageTile> list) {
    ...
}