【问题标题】:Utility method expects interface and doesn't accept a class that implements said interface [duplicate]实用程序方法需要接口并且不接受实现所述接口的类[重复]
【发布时间】:2015-08-31 07:22:37
【问题描述】:

我正在开发一个 Web 开发项目,并且正在开发几个具有“新闻提要”功能的应用程序。我想确保每个带有图片的项目都来回翻转一个开关,以便图片在左右交替,即使中间的某些项目没有图片。所以,我创建了一个界面:

public interface TextWithImageTile {

    public abstract String getOrientation( ) ;

    public abstract void setOrientation( String orientation ) ;

}

现在,我所有的“新闻提要”都使用实现该接口的新闻项目,而不管每个人使用什么自定义字段。所以,我希望能够实例化这个实用程序类来处理实现该接口的项目列表:

public class AlignmentAssigner {

    List<TextWithImageTile> listToAssign ;

    public AlignmentAssigner(List<TextWithImageTile> list) {

        this.listToAssign = list ;

    }

    public void alignList( ) {

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

    }

}

但是现在,当我尝试向它发送 HomeItem 类列表(实现 TextWithImageTile 接口)时,它会抱怨类型不匹配。这是实现:

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

AlignmentAssigner alignmentAssigner = new AlignmentAssigner( homeItems );

有人告诉我,“构造函数 AlignmentAssigner(List) 未定义。”我这里有交叉的东西吗?是否可以让一个方法处理特定接口的所有实现,只要它只被要求对所述接口定义的字段和方法进行操作?如果是这样,我的代码如何 - 或需要更改什么?

【问题讨论】:

    标签: java interface


    【解决方案1】:

    你应该使用

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多