String name; public User(final Long id, final String name) { this.id = id; this.name = name; } public Long getId() { return id; } public String getName() { return name; } @Override public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; final User user = (User) o; if (!id.equals(user.id)) return false; return name.equals(user.name); } @Override public int hashCode() { int result = id.hashCode(); result = 31 * result + name.hashCode(); return result; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + '}'; } } • 例えば Userクラス ◦ idとnameを持つ • ゲッター • equals, hashCode, toString • idのデフォルト値の使用を許可 するためにコンストラクタを追加 • Lombokのようなビルダーパ ターンを実装 関心: 読み取り専用 id と name が存在する