传递方法参考NoClassDefFoundError

时间:2019-06-10 22:47:41

标签: java android

我有一个自定义链接列表类,该类具有一个find函数,该函数将遍历列表,直到测试通过并返回该节点。

呼叫时:

firstHid = find(list, point::isNotVisible);

我得到了错误:

  

java.lang.NoClassDefFoundError:无法解决以下问题:Lnu / abc /-$$ Lambda $ 1Xu6yqqPInUkBwCVFTE0OiCxD-o;

为了测试,我尝试了以下操作:

Predicate<Edge> test = point::isVisible;

哪个仍然给出相同的错误。我尝试在方法上方使用@Keep,因为我认为可能是造成混淆的原因,但这并不能解决问题。然后,我检查了minSDK中的方法引用,并说它适用于任何方法。我不确定从这里去哪里。

函数如下:

public static <T> CustomLinkedList<T> find(CustomLinkedList<T> begin,
                                           Predicate<T> fn) {
    if (begin == null) { return null; }
    CustomLinkedList<T> iterator = begin;
    do {
       if (fn.test(iterator.data)){
            return iterator;
        }
        iterator = iterator.next;
    } while (iterator != begin && iterator != null);
    return null;
}

1 个答案:

答案 0 :(得分:1)

似乎您正在使用java.util.function包中的类Predicate。

文档https://developer.android.com/studio/write/java8-support 声明此程序包仅在API级别24或更高版本中可用,并且您尝试在具有API 21的Android 5.0上运行它。

您仍然可以从guava库中使用谓词或编写自己的界面。