Необходимо снова привести список после фильтрации и преобразования объектов с помощью Java 8 Stream API. - PullRequest
2 голосов
/ 27 апреля 2020

У меня есть список объектов, и я хочу отфильтровать эти объекты определенного типа c, привести их и собрать в новый список. Вот почему я использую потоковый API, предложенный в следующих вопросах:

Java 8 Stream API: отфильтруйте по экземпляру и приведите

Возможно ли это для сотворения потока в Java 8?

Тем не менее, Intellij говорит мне, что после фильтрации, приведения и сбора и повторного сбора собранного списка я хочу выяснить, почему? И, если я приму предложение, ошибка исчезнет, ​​но верно ли это сделать?

enter image description here

Справочная информация: я разрабатываю stati c программный анализ с Eclipse JDT, поэтому я перезаписываю методы visit () для обработки узлов AST с указанным типом c.

Вот мой код обработки AnnotationTypeDeclaration:

  @Override
  public boolean visit(AnnotationTypeDeclaration node) {
    List<AnnotationTypeMemberDeclaration> memberDeclarations = (List<AnnotationTypeMemberDeclaration>) node.bodyDeclarations().stream()
            .filter(AnnotationTypeMemberDeclaration.class::isInstance)
            .map(AnnotationTypeMemberDeclaration.class::cast)
            .collect(Collectors.toList());
    // ... do something with the memberDeclarations
    return true;
}

Вот определение annotationTypeDeclaration.bodyDeclarations ():

    public List bodyDeclarations() {
        return this.bodyDeclarations;
    }
...