작업 상태

- List<> lists 의 내용의 값을 합하다가 나온 에러입니다.

 

Long totalCount = 0L;

for(Category cate: categorites){
    String name = cate.getName();
    Long count = 0L;
   
    try{
        count = countMap.get(name);
        if(count == null ) count = 0L;
    }catch(Exception e){ count = 0L;}

    totalCount += count;

    cate.setCount(count);
}

이런 형태를 함수형? 연산으로 변환하던중 나타났습니다.

        int totalCount = topicList.stream().mapToInt(Topic::getCount.intValue()).sum();


에러 메시지 

java.lang.Error: Unresolved compilation problem:
 The target type of this expression must be a functional interface

java.lang.Error: Unresolved compilation problem:
        The target type of this expression must be a functional interface

 

원인

public class Topic {
    @Transient Long count; 

이게 Long 형이어서 int형변환해서 계산하려던 중 발생했는데.

java 문법자체를 아직 잘 이해 못하겠습니다.


처리

// int totalCount = topicList.stream().mapToInt(Topic::getCount.intValue()).sum();

 

int totalCount = topicList.stream().mapToInt(topic -> topic.getCount().intValue()).sum();

참고

자바람다식

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
IntStream intStream = list.stream().mapToInt(i -> i * i);

+ Recent posts