提问者:小点点

如何修复有歧义的方法引用?【重复】


如何在不修改类Case的情况下解决类Test中的两个错误行?

class Case {
    public boolean isEmpty() {
        return true;
    }

    public static boolean isEmpty(Case t) {
        return true;
    }
}

public class Test {
    public static void main(String[] args) {
        Predicate<Case> forNonStaticMethod = Case::isEmpty;//<--TODO: fix compile error: 
        Predicate<Case> forStaticMethod = Case::isEmpty;//<--TODO: fix compile error: 
        //Ambiguous method reference: both isEmpty() and isEmpty(Case) from the type Case are eligible          
    }
}

共1个答案

匿名用户

您可以使用lambda表达式而不是方法引用:

Predicate<Case> forNonStaticMethod = c -> c.isEmpty();
Predicate<Case> forStaticMethod = c -> Case.isEmpty(c);