# A Canonical equals() For Java

DevFeed: [A Canonical equals() For Java](<https://devfeed.tech/articles/a-canonical-equals-for-java-32219.md>)

Original publisher: [Read original article](<https://bruceeckel.com/2017/01/07/a-canonical-equals-for-java/>)

Author: Bruce Eckel

Published: 2017-01-07T00:00:00Z

Content type: tutorial

Language: en

Sources: [Bruce Eckel - Computing Thoughts](<https://devfeed.tech/sources/bruce-eckel-computing-thoughts.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [class](<https://devfeed.tech/tags/class.md>), [code](<https://devfeed.tech/tags/code.md>), [constructor](<https://devfeed.tech/tags/constructor.md>), [equals](<https://devfeed.tech/tags/equals.md>), [fields](<https://devfeed.tech/tags/fields.md>), [interface](<https://devfeed.tech/tags/interface.md>), [java](<https://devfeed.tech/tags/java.md>), [object](<https://devfeed.tech/tags/object.md>), [override](<https://devfeed.tech/tags/override.md>), [subclass](<https://devfeed.tech/tags/subclass.md>), [subtype](<https://devfeed.tech/tags/subtype.md>), [tests](<https://devfeed.tech/tags/tests.md>)

## AI overview

This Java tutorial explains how to implement a concise equals() method using Java 7's Objects.equals(). It covers the equals contract, identity and type checks, selected-field comparisons, and tests using example classes and a factory method.

## Source excerpt

Even with the help of Java 7's Objects.equals(), the equals() method is often written in a verbose and messy fashion. This article shows how you can write a succinct equals() in a format that allows easy checking with visual inspection. When you create a new class, it automatically inherits class Object. If you don't override equals(), you'll get Objects equals() method. By default this compares addresses, so only if you are comparing the exact same objects will you get true.