Что нужно иметь в виду при расширении базового Java-класса - PullRequest
0 голосов
/ 10 октября 2019

У меня есть требование, когда мне нужно расширить Java-класс FileWriter, чтобы я мог переопределить метод «Запись» для выполнения дополнительной задачи по созданию копии изменяемого файла. Вот мой код:

public class MyFileWriter extends FileWriter {
   String fileName;

    public MyFileWriter(String file) throws IOException{
        super(file + ".tmp");
        this.fileName = file;
    }

    public MyFileWriter(File file, boolean append) throws IOException{
        super(File.createTempFile(file.getName(), "tmp") , append);
        this.fileName = file.getAbsolutePath();
    }

    public void write(String str, int off, int len) throws IOException {
        successBackupFile(this.fileName,this.backupFilePath);
        super.write(str, off, len);
        new File(this.fileName+ ".tmp").renameTo(new File(this.fileName));

    }

    private static void successBackupFile(String fileToBackup,String backupFilePath) {

        String timeStamp = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss").format(new Date());
        File f = new File(backupFilePath+ timeStamp);

        try
        {
            Files.copy(new File(fileToBackup).toPath(), f.toPath());
        }
        catch(IOException ioe){
           //message
        }
    }

}

В: В моем коде я собираюсь использовать только 2 из конструктора класса FileWriter. Будет ли хорошей практикой предоставление определения для всех 4 конструкторов. Q: В общем, какие хорошие практики или вещи следует иметь в виду при расширении нативного базового Java-класса

Если кто-то может указать мне на какие-либо хорошие материалы о вещах, которые следует иметь в виду при расширении нативного базового Java-класса,будет очень полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...