doilux’s tech blog

ITに関する備忘録。 DDP : http://doiluxng.hatenablog.com/entry/2018/01/01/195409

Groovyの==

Groovyの==は、Comparableを実装している場合はcompareToを使って検証するらしい。

Comparableを実装していない場合

@AllArgsConstructor
public class Zombie {
    private final int no;
    private final String name;
}

class ZombieTest extends Specification {

    def "test"() {
        setup:
        def sakura = new Zombie(1, "sakura")
        def saki = new Zombie(1, "saki") // 本当は2号

        expect:
        (sakura == saki) == false
        sakura.equals(saki) == false
    }
}

Comparableを実装している場合

@AllArgsConstructor
public class Zombie implements Comparable<Zombie> {
    private final int no;
    private final String name;

    @Override
    public int compareTo(Zombie o) {
        return no - o.no;
    }
}

class ZombieTest extends Specification {

    def "test"() {
        setup:
        def sakura = new Zombie(1, "sakura")
        def saki = new Zombie(1, "saki") // 本当は2号

        expect:
        (sakura == saki) == true
        sakura.equals(saki) == false
    }
}

sakura == sakisakura.compareTo(saki) == 0で判定しているとな。

参考

stackoverflow.com