2016-12-30 3 views
1

Я собираю строку в списке с помощью Java 8. Но это дает мне ошибку компиляции, чтоJava 8 Collect Список <String>

несовместимым типов: статистические выводы переменной T имеет несовместимые границы сдерживающих равенства: String ниже границы: Object

final List<ProjectLevel> levels = projectLevelFacade 
        .findUUIDByNameorNumber(freeText, businessAccountId); 
final List<String> uuids = levels 
        .stream() 
        .map((level) -> level.getProjectLevelsUUIDs()) // this return List<String> 
        .flatMap(Collection::stream) 
        .collect(Collectors.toList()); 

может любой быть идея, как добиться этого с помощью Java 8?

Есть ли какой-либо литой или что-то в этом роде?

Я также принимаю reference отсюда.

+1

Является ли «ProjectLevel» общим? Должно ли это быть 'ProjectLevel ' иначе 'getProjectLevelsUUIDs()' также не будет общим. –

+0

@PeterLawrey да это 'ProjectLevel ' – Hiru

+0

@PavneetSingh это не должно работать, поскольку ошибка приводит меня в другое место. все же позвольте мне попробовать – Hiru

ответ

4

ProjectLevel - общий класс - при написании List<ProjectLevel> вы используете необработанный тип, и система вывода типов больше не работает.

Try:

final List<ProjectLevel<?>> levels = projectLevelFacade 
       .findUUIDByNameorNumber(freeText, businessAccountId); 

и он должен составить, как и ожидалось.

+0

это сработало! но проблема, возникающая сейчас, связана с namedQuery, она не возвращает никакого общего. Означает, что он возвращает 'List '. поэтому не удалось вернуть его в «List >' – Hiru

+2

@Hiru, тогда вам также нужно изменить этот метод. – assylias

+0

Да, я пробовал это, но в именованном запросе я не могу 'getResultList()' в 'List >' – Hiru

Смежные вопросы