почему то при написании вопроса код не обновляется , поэтому по частям. Я посмотрел множество подсказок о том как решали другие и мне непонятна их логика . 1) помогите мне пожалуйста понять что вообще от меня хотят в качестве результата методов setFileName и GetFileContent? Как я это вижу, SetFileName должен просто установить что вот тут будет использоваться файл с этим Path. GetFileContent на мой взгляд должен вернуть финальную строку. -> а метод run должен просто оба метода по очереди вызвать и отдыхать себе дальше. другие пользователи нагружают метод run так что в методе GetFileContent вообще нет смысла, разве нет? 2) посоветуйте как работать с моим вариантом решения. он не получается даже на фазе теста. выкидывает nullpointer
public static class ReadFileThread extends Thread implements ReadFileInterface{
        public static volatile FileInputStream fis;
        public static volatile Scanner sc;
        //
        public String fullFileName;

        public void run(){
            getFileContent();
            sc.close();
        }

        @Override
        public void setFileName(String fullFileName) {
            /*try{
                sc=new Scanner(new FileInputStream(fullFileName));
            }
            catch (FileNotFoundException e){}*/
            this.fullFileName =fullFileName;

        }

        @Override
        public String getFileContent() throws NullPointerException{
            StringBuilder content = null;
            assert false;
            if(!sc.hasNextLine()){return "";}
            content=content.append(sc.nextLine().toString());
            while ( sc.hasNextLine()){
                assert false;
                content.append(" ").append(sc.nextLine());
            }
            assert false;
            return content.toString();
        }
    }