首页 > 解决方案 > 将 UnaryOperator 实现为匿名类时出现 NoClassDefFoundError

问题描述

我解决的问题如下:

给定一个非负整数列表,返回最右边数字的整数列表。

rightDigit([1, 22, 93]) → [1, 2, 3] rightDigit([16, 8, 886, 8, 1]) → [6, 8, 6, 8, 1] rightDigit([10, 0 ]) → [0, 0]

这个问题本身是微不足道的,我使用单行流操作解决了这个问题。

return nums.stream().map(e -> e % 10).collect(Collectors.toList());

然而,为了测试我对匿名类的理解,我决定使用匿名类来实现它,提出的是:

public List<Integer> rightDigit(List<Integer> nums) {
    nums.replaceAll(new java.util.function.UnaryOperator<Integer>() {
        public Integer apply(Integer n) {
            return  new Integer(n.intValue() % 10);
        }
    });  
    return nums;
}

我的问题是我收到NoClassDefFoundError错误并且无法自行解决。我会很感激知道我在这里做错了什么,谢谢。

标签: javacollectionsjava-8functional-programming

解决方案


它编译正确。

看起来 UnaryOperator 的定义不在您的类路径中。

您能否分享一下:完整的堆栈跟踪,java --version以及您如何编译和运行它。


推荐阅读