모든 목록 <을 개체 목록 []으로 변형 할 수 있기를 원합니다. 즉, 주어진 목록의 모든 요소는 지정된 방식으로 개체 배열로 변형되어야합니다. 예를 들어모든 목록을 목록으로 변환 <Object[]>
, 나는
Function <User, Object[]> mapper =
user -> new Object[] {user.getUserId(), user.getUserName()}
List<User> users =
Lists.newArrayList(new User((long) 1, "Name1"), new User ((long) 2, "Name2"));
과 기능을 가지고 그리고 매퍼와 모든 사용자를 변환하여, 객체 배열의 목록을 얻을 필요가있다. 그러나 요점은 함수를 작성하는 것입니다.이 함수는 주어진 목록 및 주어진 매퍼에서 작동 할 수 있습니다.
나는 변압기 클래스를 생성하고 다음 방법으로 내 목표를 달성하기 위해 노력했지만 컴파일 오류가 발생했습니다 :
당신이 내게 줄 수있는 어떤 조언class Transformer {
private List<?> content;
private Function<?, Object[]> mapper;
//getters and setters
....
public List<Object[]> transform() {
return content.stream()
.map(mapper) // this row isn't compiled
.collect(Collectors.toList());
}
}
Error:(75, 45) java: method map in interface java.util.stream.Stream<T> cannot be applied to given types;
required: java.util.function.Function<? super capture#1 of ?,? extends R>
found: java.util.function.Function<capture#2 of ?,java.lang.Object[]>
reason: cannot infer type-variable(s) R
(argument mismatch; java.util.function.Function<capture#2 of ?,java.lang.Object[]> cannot be converted to java.util.function.Function<? super capture#1 of ?,? extends R>)
?
어떤 오류가 발생 했습니까? – Eran
Error : (75, 45) java : interface java.util.stream.Stream의 메소드 맵는 지정된 타입에 적용 할 수 없습니다. 필수 : java.util.function.Function ?의 슈퍼 캡처 # 1,? 확장 : R> 발견 : java.util.function.Function , java.lang.Object []> 이유 : 형식 변수를 추론 할 수 없습니다. R (인수 불일치; java.util.function .Function , java.lang.Object.Function >의 캡쳐 # 2는 java.util.function.Function으로 변환 될 수 없습니다.?,? extends R>) –
@ funny-funny 댓글로 게시하십시오. 이 정보는 질문과 관련이 있으므로 [편집]하고이 정보를 포함시켜야합니다. – Pshemo