Реализуй логику метода getAllAnimals.
Аргумент метода pathToAnimals — это абсолютный путь к директории, в которой хранятся скомпилированные классы.
Путь не обязательно содержит / в конце.
НЕ все классы наследуются от интерфейса Animal.
НЕ все классы имеют публичный конструктор без параметров.
Только для классов, которые наследуются от Animal и имеют публичный конструктор без параметров, — создать по одному объекту.
Добавить созданные объекты в результирующий сет и вернуть.
Метод main не участвует в тестировании.
Требования:
1. Размер множества возвращаемого методом getAllAnimals должен быть равен количеству классов поддерживающих интерфейс Animal (среди классов расположенных в директории переданной в качестве параметра).
2. В множестве возвращаемом методом getAllAnimals должны присутствовать все классы поддерживающие интерфейс Animal и имеющие публичный конструктор без параметров (среди классов расположенных в директории переданной в качестве параметра).
3. В множестве возвращаемом методом getAllAnimals НЕ должен присутствовать ни один класс не поддерживающий интерфейс Animal (среди классов расположенных в директории переданной в качестве параметра).
4. Метод getAllAnimals должен быть статическим.
public class Solution {
public static void main(String[] args) {
Set<? extends Animal> allAnimals = getAllAnimals(Solution.class.getProtectionDomain().getCodeSource().getLocation().getPath() + Solution.class.getPackage().getName().replaceAll("[.]", "/") + "/data");
System.out.println(allAnimals);
}
public static Set<? extends Animal> getAllAnimals(String pathToAnimals) {
Set<Animal> set = new HashSet<>();
File[] list = new File(pathToAnimals).listFiles();
for (File file : list) { //в этой строке NullPointerException, потому что в предыдущей строке список не сформировался
//------------------------------
Всё что ниже не имеет значения.
Код принят, но он кидает исключение. Я смотрел другие вариант, это место плюс минус одинаковое, что может быть в настройках системы, что такое происходит?