equals and hashCode

Robert J. Saulnier robert.j.saulnier at gmail.com
Fri Oct 26 12:11:58 PDT 2012


Any plans on having lambdas override equals and hashCode?

I wanted to use a lambda as a key in a Map, but if you get the key
from different classes, they are not equal.

class A {

    void m() {
        Container.find(this::m); // <------ this::m should be equal to...
    }
}

class B {

    public static void main(String[] args) {
        A a = new A();

        Container.find(a::m); // <-------- ...a::m.
    }
}

class Container {

    public static Object find(Runnable r) {
        //find something
    }
}

Right now, the compiler will generate an inner class of A for this::m
and an inner class of B for a::m. I think there might be use cases
where these two inner classes are equal with matching hashCodes.

- Bob


More information about the lambda-dev mailing list