关于java:实用程序方法需要接口,不接受实现所述接口的类

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

本问题已经有最佳答案,请猛点这里访问。

我正在做一个网络开发项目,我正在开发几个具有"新闻订阅"功能的应用程序。我想确保每个有图片的项目都前后翻转一个开关,这样图片就可以左右交替,即使其中的一些项目没有图片。因此,我创建了一个接口:

1
2
3
4
5
6
7
public interface TextWithImageTile {

    public abstract String getOrientation( ) ;

    public abstract void setOrientation( String orientation ) ;

}

现在,我的所有"新闻提要"都使用实现该接口的新闻项,而不管它们使用的是什么自定义字段。因此,我希望能够实例化这个实用程序类来处理实现该接口的项的列表:

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(列表)未定义。"这里有交叉线吗?是否可以让一个方法处理一个特定接口的所有实现,只要它只被要求操作由该接口定义的字段和方法?如果是的话,我的代码中应该怎么修改?enter image description here


你应该使用

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