/** * ドメイン非依存URL出力フィルタ * javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい * * データベースには絶対URL(https://minner.asia)を保持し、 * 表示時に現在のドメイン(home_url())に動的変換する */ function javadrill_make_urls_dynamic($content) { if (empty($content)) { return $content; } // データベース内の絶対URLを現在のhome_url()に置換 $old_url = 'https://minner.asia'; $new_url = untrailingslashit(home_url()); // http版も対応(念のため) $content = str_replace($old_url, $new_url, $content); $content = str_replace('http://minner.asia', $new_url, $content); return $content; } // 投稿本文、ウィジェット、タームの説明、抜粋に適用 add_filter('the_content', 'javadrill_make_urls_dynamic', 20); add_filter('widget_text', 'javadrill_make_urls_dynamic', 20); add_filter('term_description', 'javadrill_make_urls_dynamic', 20); add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20); 014 継承(オブジェクトクラスの継承) 039 解答例 | Javaドリル

014 継承(オブジェクトクラスの継承) 039 解答例

014-039 014 継承
import java.util.Objects;

public class Book {
    private String title;
    private String author;
    private int year;

    // コンストラクタなどは省略

    @Override
    public int hashCode() {
        return Objects.hash(title, author, year);
    }

    // equals メソッドもオーバーライドすることが推奨されます
    // equals の実装は hashCode の計算に関連しています

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Book otherBook = (Book) obj;
        return year == otherBook.year &&
               Objects.equals(title, otherBook.title) &&
               Objects.equals(author, otherBook.author);
    }

    // その他のメソッドやフィールドは省略
}

この例では、Objects.hash メソッドを使用して、title、author、year フィールドを組み合わせてハッシュコードを計算しています。このようにすることで、hashCode メソッドが適切に実装され、ハッシュベースのデータ構造で正しく動作します。また、equals メソッドもオーバーライドしています。equals メソッドと hashCode メソッドは密接に関連しており、同じオブジェクトが等しいと判定される場合は、同じハッシュコードを返すべきです。

hashCodeメソッド

hashCode メソッドは、Javaの Object クラスで定義されているメソッドの一つであり、オブジェクトのハッシュコードを返します。ハッシュコードは通常、オブジェクトの内部情報に基づいて計算され、異なるオブジェクトに異なるハッシュコードが割り当てられます。hashCode メソッドは、主にハッシュテーブルなどのデータ構造で利用されます。

以下は、Object クラスの hashCode メソッドの宣言です。

public int hashCode()

hashCode メソッドをオーバーライドする主な目的は、異なるオブジェクトが異なるハッシュコードを持つようにし、同じオブジェクトが等しいと判定される場合は同じハッシュコードを持つようにすることです。これにより、ハッシュベースのデータ構造(例: HashMap、HashSet)で正確に動作します。

hashCode メソッドをオーバーライドする際の一般的な原則は以下の通りです。

  1. equals メソッドで等しいと判定されるオブジェクトは同じハッシュコードを返すようにする。
  2. 異なるオブジェクトには異なるハッシュコードを返す。

ハッシュコードの計算には様々な方法がありますが、一般的にはオブジェクト内のフィールドを組み合わせてハッシュ値を生成します。Objects.hash メソッドを使用すると、簡単に複数のフィールドを組み合わせたハッシュ値を計算できます。

「014 継承」問題集リスト

🎯 実習で理解を深めよう

この内容についてJavaDrillで実際に手を動かして学習できます

コメント

タイトルとURLをコピーしました