Вот какую рекомендацию от ментора по поводу причиы недовольства валидатора я вижу:
Убедись что метод getFileContent возвращает пустую строку, если метод run не запускался.
Что это вообще может означать, если getFileContent запускается только и исключительно в методе run?
Единственное, что в голову приходит - выбрасывание NPE, если просто вызвать этот метод без проверки на неинициализированность fileName (как это реализовано в исходном коде).
Добавил такую проверку - теперь при вызове метода getFileContent выдает пустую строку. И все равно валидатор выдает ровно такой же "совет".
package com.javarush.task.task16.task1630;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import static java.lang.System.in;
public class Solution {
public static String firstFileName;
public static String secondFileName;
static {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
try {
firstFileName = reader.readLine();
secondFileName = reader.readLine();
reader.close();
in.close();
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws InterruptedException {
systemOutPrintln(firstFileName);
systemOutPrintln(secondFileName);
}
public static void systemOutPrintln(String fileName) throws InterruptedException {
ReadFileInterface f = new ReadFileThread();
f.setFileName(fileName);
f.start();
f.join();
System.out.println(f.getFileContent());
}
public interface ReadFileInterface {
void setFileName(String fullFileName);
String getFileContent();
void join() throws InterruptedException;
void start();
}
public static class ReadFileThread extends Thread implements ReadFileInterface {
private String fileName;
@Override
public void setFileName(String fullFileName) {
this.fileName = fullFileName;
}
@Override
public String getFileContent() {
if (this.fileName == null) {
return "";
} else {
Path path2File = Paths.get(this.fileName);
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader2 = Files.newBufferedReader(path2File);
String s;
while ((s = reader2.readLine()) != null) {
if (sb.length() == 0) {
} else {
sb.append(" ");
}
sb.append(s);
}
reader2.close();
} catch (Exception e) {
System.out.println(e);
}
return sb.toString();
}
}
@Override
public void run() {
getFileContent();
}
}
}