/** * ドメイン非依存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); 017 インターフェイス(インターフェイスの実用例) 022 解答例 | Javaドリル

017 インターフェイス(インターフェイスの実用例) 022 解答例

017-022 017 インターフェイス
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

// ファイルの読み込みと書き込みを行うインターフェイス
interface FileOperation {
    String readFile(String filePath) throws IOException;
    void writeFile(String filePath, String content) throws IOException;
}

// FileOperation インターフェイスの実装クラス
class FileHandler implements FileOperation {
    @Override
    public String readFile(String filePath) throws IOException {
        StringBuilder content = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append('\n');
            }
        }
        return content.toString();
    }

    @Override
    public void writeFile(String filePath, String content) throws IOException {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
            writer.write(content);
        }
    }
}

public class Main {
    public static void main(String[] args) {
        // ファイルの読み込みと書き込みを行うための FileHandler インスタンスを生成
        FileOperation fileHandler = new FileHandler();

        // 読み込むファイルのパス
        String filePath = "example.txt";

        try {
            // ファイルの内容を読み込み
            String fileContent = fileHandler.readFile(filePath);
            System.out.println("File Content:\n" + fileContent);

            // 書き込む内容
            String newContent = "This is new content.";

            // ファイルに新しい内容を書き込み
            fileHandler.writeFile(filePath, newContent);

            System.out.println("File Content After Writing:\n" + fileHandler.readFile(filePath));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

この例では、FileHandler クラスが FileOperation インターフェイスを実装しており、ファイルの読み込みと書き込みを行います。Main クラスでは、FileHandler クラスのインスタンスを生成し、ファイルの読み書き操作を実行しています。

ファイル操作のためのインターフェイス

ファイル操作のためのインターフェイスを設計することは、異なるクラスが共通のファイル操作メソッドを提供し、コードの再利用性と拡張性を高める手段です。以下に、このアプローチの解説を示します。

ファイル操作のためのインターフェイス(FileOperation)

import java.io.IOException;

interface FileOperation {
    String readFile(String filePath) throws IOException;
    void writeFile(String filePath, String content) throws IOException;
}
  1. readFile メソッド: ファイルの指定されたパスから内容を読み取り、文字列として返します。このメソッドは IOException をスローする可能性があるため、呼び出し元で例外処理が必要です。
  2. writeFile メソッド: 指定されたパスのファイルに指定された内容を書き込みます。同様に、このメソッドも IOException をスローする可能性があります。

ファイル操作の実装クラス(FileHandler)

import java.io.*;

class FileHandler implements FileOperation {
    @Override
    public String readFile(String filePath) throws IOException {
        StringBuilder content = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append('\n');
            }
        }
        return content.toString();
    }

    @Override
    public void writeFile(String filePath, String content) throws IOException {
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath))) {
            writer.write(content);
        }
    }
}
  1. readFile メソッドの実装: BufferedReader を使用して指定されたファイルから行を読み取り、それを文字列に追加します。
  2. writeFile メソッドの実装: BufferedWriter を使用して指定されたファイルに文字列を書き込みます。

このように、FileHandler クラスは FileOperation インターフェイスを実装し、ファイルの読み書きメソッドを提供しています。他のクラスがファイル操作を行いたい場合、FileOperation インターフェイスを実装することで、同じインターフェイスを介してファイル操作の機能を利用できます。

「017 インターフェイス」問題集リスト

🎯 実習で理解を深めよう

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

コメント

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