在流上调用.filter()会丢失泛型类型

时间:2015-12-07 10:08:03

标签: java-stream

我有以下代码。 "可保护"是一个界面。我的编译器给出以下错误:"不兼容的类型:对象无法转换为Collection" 当我删除.filter行时,一切正常。为什么编译器在这里松开我的类型? 谢谢, 汉纳斯

Collection<Protectable> requiredItems  prefs.getConnectedProtectables(fuzDoc)
.stream()
.filter(protectable -> !protectable.itemVisibleForCurrentUser(fuzDoc))
.collect(Collectors.toList());

变量prefs实现HasConnectedRights,其实现如下:

public interface HasConnectedRights {

    public Collection<Protectable> getConnectedProtectables(FuzDocument doc);

}

接口Protectable声明方法itemVisibleForCurrentUser,如下所示:

default public boolean itemVisibleForCurrentUser(Docker<FuzDocument>  doc) {
            User user = UserCtrl.getCurrentUser(doc.getDoc());
            return user == null || itemVisibleFor(user);
}

0 个答案:

没有答案