在IntelliJ IDEA的Evaluate Expression窗口中调试期间,我从数据库中获取了大量元素。
dao.getAll(Product.class);
这将返回List<Product>
。我想过滤这个集合,并使用Java 8 Stream API在其中查找一些特定的项目。
dao.getAll(Product.class).stream()
.filter(Product::isActive)
.collect(Collectors.toList());
但即使方法存在于给定的类中,我也会得到NoSuchMethodError
。
如果在代码中而不是在“评估表达式”窗口中创建List<Product>
,则它正在运行。使用哪个实体以及调用哪个方法无关紧要。它总是表现得一样。
这种ad-hoc创建的流的预期行为是否有解决方法?
编辑: 从异常及其堆栈跟踪中找不到什么方法并不明显。 异常消息:
java.lang.NoSuchMethodError: a.b.MyClass.access$000(La/b/MyClass;)La/b/MySuperClass;
Stacktrace只能在我的断点所在的代码中找到一个位置。
如上所述,调用哪个实体的方法无关紧要。当从Expression Evaluation窗口调用包含dao.getAll(Product.class)
的所有内容时,我总是收到此错误。在类文件中创建dao.getAll(Product.class)
列表并在Expression Evaluation窗口中获取并过滤流时,它可以正常工作。
希望它有意义。