2012-02-15 2 views
3

"자리 표시 자 널을 변환 할 수 없습니다"가 발생합니다.간단한 추출물은 내가 간단한 POJO를

public class UserIdTest { 

    public static void main(String[] args) { 
    List<UserId> list = new ArrayList<UserId>(); 
    list.add(new UserId("111111-1111", "12345678", new Integer(234589235))); 
    list.add(new UserId("111111-1111", "12345678", new Integer(234589235))); 
    list.add(new UserId("111111-1111", "12345678", new Integer(234589235))); 

    getSsnList(list); 
    } 

    private static List<String> getSsnList(List<UserId> users) { 
    return extract(users, on(UserId.class).ssn); 
    } 
} 

및 LambdaJ 예외 : : 그래서 그냥 예로서 나는 쓰기

Exception in thread "main" ch.lambdaj.function.argument.ArgumentConversionException: Unable to convert the placeholder null in a valid argument 
at ch.lambdaj.function.argument.ArgumentsFactory.actualArgument(ArgumentsFactory.java:76) 
at ch.lambdaj.function.convert.ArgumentConverter.<init>(ArgumentConverter.java:29) 
at ch.lambdaj.Lambda.extract(Lambda.java:1035) 
at UserIdTest.getSsnList(UserIdTest.java:23) 
at UserIdTest.main(UserIdTest.java:20) 

이 내가 여기에 놓친 거지 무엇 때문에 정말 기본 동작을 것 같아?

답변

8

Lambdaj는 최종 사용자 클래스를 Proxy로 랩핑하고 METHOD 호출을 가로 챕니다. 즉, 필드에서만 작동 할 수 있지만 그와 같은 메소드에서만 작동 할 수 있습니다.

extract(users, on(UserId.class).getSsn()); 
관련 문제