/** * ドメイン非依存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); 018 オブジェクト指向の深化(ジェネリクスとワイルドカード) 016 解答例 | Javaドリル

018 オブジェクト指向の深化(ジェネリクスとワイルドカード) 016 解答例

018-016 018 オブジェクト指向の深化
import java.util.Collection;

public class GenericExample {
    // ワイルドカードを使用したジェネリクスメソッド
    public static void printElements(Collection<?> collection) {
        for (Object element : collection) {
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        // 整数型のリスト
        List<Integer> integerList = new ArrayList<>();
        integerList.add(1);
        integerList.add(2);
        integerList.add(3);

        // 文字列型のリスト
        List<String> stringList = new ArrayList<>();
        stringList.add("One");
        stringList.add("Two");
        stringList.add("Three");

        // 任意の型のセット
        Set<Double> doubleSet = new HashSet<>();
        doubleSet.add(1.1);
        doubleSet.add(2.2);
        doubleSet.add(3.3);

        // ワイルドカードを使用したメソッドを呼び出して要素を出力
        printElements(integerList);
        printElements(stringList);
        printElements(doubleSet);
    }
}

この例では、printElements メソッドがワイルドカードを使用して任意のジェネリクスコレクションを受け取り、要素を順番に出力します。main メソッドでは、整数型のリスト、文字列型のリスト、および任意の型のセットの要素を printElements メソッドを使用してそれぞれ出力しています。

ワイルドカード

ワイルドカード(Wildcards)は、Javaにおいてジェネリクスを使用する際に、型の柔軟性を提供するための特殊な機能です。主に3つの種類があります:、、。

<?>(非境界ワイルドカード):

未知の型にマッチします。
例えば、Listはどんな型の要素でも受け入れることができます。
メソッドの引数に使われることがあり、任意の型のコレクションを受け入れる柔軟性を提供します。

public static void printElements(Collection<?> collection) {
    for (Object element : collection) {
        System.out.println(element);
    }
}

<? extends T>(上限境界ワイルドカード):

T または T のサブクラスにマッチします。
例えば、ListはNumberまたはそのサブクラスの要素を受け入れます。
読み取り専用の場合に使用されることがあります。

public static double sum(List<? extends Number> numbers) {
    double total = 0.0;
    for (Number number : numbers) {
        total += number.doubleValue();
    }
    return total;
}

<? super T>(下限境界ワイルドカード):

T または T のスーパークラスにマッチします。
例えば、ListはIntegerまたはそのスーパークラスの要素を受け入れます。
書き込み専用の場合に使用されることがあります。

public static void addNumbers(List<? super Integer> numbers) {
    numbers.add(1);
    numbers.add(2);
    numbers.add(3);
}

ワイルドカードを使用することで、ジェネリクスのコードがより柔軟になり、異なる型のコレクションを同じメソッドで扱えるようになります。

「018 オブジェクト指向の深化」問題集リスト

🎯 実習で理解を深めよう

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

コメント

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