gpt4 book ai didi

java - 使用 Lambdaj 的简单提取会导致 "Unable to convert placeholder null"

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:01 24 4
gpt4 key购买 nike

我有一个简单的 pojo:

class UserId {
String ssn;
String otsId;
Integer actorId;

public UserId(String ssn, String otsId, Integer actorId) {
this.ssn = ssn;
this.otsId = otsId;
this.actorId = actorId;
}

@Override
public String toString() {
return "[otsId=" + otsId + ", ssn=" + ssn + ", actorId=" + actorId + "]";
}
}

我想从那里提取所有 ssn 值到 List<String>。所以作为一个例子,我写:

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)

这似乎是一个非常基本的操作,所以我在这里缺少什么?

最佳答案

Lambdaj 使用代理包装您的(非最终)类并拦截对它们的 METHOD 调用。这意味着它不能在字段上工作,而只能在这样的方法上工作:

extract(users, on(UserId.class).getSsn());

关于java - 使用 Lambdaj 的简单提取会导致 "Unable to convert placeholder null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9292051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com