Плиз, растолкуйте, задача 1814: UnsupportedFileName Измени класс TxtInputStream так, чтобы он работал только с txt-файлами (*.txt). Например, first.txt или name.1.part3.txt. Если передан не txt-файл, например, file.txt.exe, то конструктор должен выбрасывать исключение UnsupportedFileNameException. Подумай, что еще нужно сделать, в случае выброшенного исключения.
public class TxtInputStream extends FileInputStream {

    public TxtInputStream(String fileName) throws IOException, UnsupportedFileNameException {
        super(fileName);
        if (!fileName.endsWith(".txt")){
            super.close();
            throw new UnsupportedFileNameException();
        }
    }

    public static void main(String[] args) {
    }
}
1. Мы сначала полюбак создаём новый FileInputStream, и лишь потом проверяем, годится он нам или нет. Хотя было бы логично, сначала проанализировать fileName, и если нам подходит, то только тогда создать FileInputStream. Ява не позволяет ссылку к конструктору вышестоящего класса воткнуть в иф ( if(filename.endsWith(".txt")) super(fileName); ). Можно ли это обойти, или просто расслабится на эту тему? 2. Немного не догнал с закрытием потока. Метод close() - он не статический. Почему мы его вызываем не применительно к объекту ( this.close(); ) а через ссылку на вышестоящий класс ( super.close() ). Как оно узнает, какой именно поток нам надо закрыть? Где я туплю?