我是lambdaj的新手。這似乎是Java編程的一大特色。簡單的選擇方法(lambdaj)得到異常
所以我創建了一個非常簡單的評估程序。
但我在下面的代碼中遇到了異常。你能幫我解決什麼問題嗎?
--EDITED沒有加入參數的構造函數和封裝類X. 感謝@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)
添加無參數構造函數和getter/setter。 – adatapost 2012-04-13 03:16:39
@AVD謝謝你的幫助。我編輯過。 NullPointerException消失,但現在我得到了另一個。 – user1209133 2012-04-13 07:28:33
沒有參數構造函數是沒有必要的。 – dash1e 2012-04-13 13:12:38