gpt4 book ai didi

java - 简单选择方法 (lambdaj) 获取异常

转载 作者:行者123 更新时间:2023-11-30 07:26:53 31 4
gpt4 key购买 nike

我是 lambdaj 的新手。这似乎是 Java 编程的一个很棒的特性。

所以我创建了一个非常简单的评估程序。

但是我得到了以下代码的异常。你能帮我看看哪里出了问题吗?

--EDITED 添加了无参数构造函数和为类 X 封装的公共(public)变量。谢谢@AVD。

import java.util.Arrays;
import java.util.List;

import static ch.lambdaj.Lambda.having;
import static ch.lambdaj.Lambda.on;
import static ch.lambdaj.Lambda.select;

public class Main {

private static class X {
private String name;
public X(){
}
public X(String name) {
this.name = name;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

public static void main(String[] args) {
List<X> xs = Arrays.asList(
new X("aaa"),
new X("aaa"),
new X("bbb")
);

List<X> s = select(xs, having(on(X.class).getName().equals("aaa")));

}
}

结果是:

Exception in thread "main" ch.lambdaj.function.argument.ArgumentConversionException: Unable to convert the placeholder false in a valid argument
at ch.lambdaj.function.argument.ArgumentsFactory.actualArgument(ArgumentsFactory.java:92)
at ch.lambdaj.function.matcher.HasArgumentWithValue.havingValue(HasArgumentWithValue.java:70)
at ch.lambdaj.function.matcher.HasArgumentWithValue.havingValue(HasArgumentWithValue.java:58)
at ch.lambdaj.Lambda.having(Lambda.java:1193)
at Main.main(Main.java:34)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

最佳答案

这样改变你的表情

List<X> s = select(xs, having(on(X.class).getName(), Matchers.equalTo("aaa")));

它会起作用。

只有在以下情况下你才能使用你的表达式

on(X.class).getName()

直接返回一个 boolean 值,例如

List<X> s = select(xs, having(on(X.class).isLowerCaseString());

其中 isLowerCaseString()X 的一个方法,如果所有名称字母都是小写字母,则返回 true。

关于java - 简单选择方法 (lambdaj) 获取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10134686/

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